윈도우 메모리사용에 대해 질문좀하겠습니다

질문 1.


일단 윈도우8 64비트이구요 시스템정보에 사용가능7.9GB 라고 표시 되어 있습니다 

근데 노트북이 점유율이 50%도 안쓰고 메모리 부족 메시지를 띄웁니다 

그래서 가상메모리 사이즈를 조금 늘렸더니 
물리메모리 점유율 50% 즈음에 물리메모리를더안쓰고 가상메모리를 쓰더라구요?
아니 왜 물리메모리가 남는데 가상메모리를 쓰는 것이며(어플리케이션마다 가상메모리필수로쓴다는건 알고있슴다) 
왜 물리메모리를 다 안쓰는 겁니까?
제조사 엔지니어들도 하드웨어 테스트 헛지거리만 하고 있고(하드웨어 이상없음 보장함)
원인이라도 알아야겠기에 순번대로 질문 좀 하겠습니다

1.물리메모리가 남아있는데도 가상메모리를 사용하는 이유가 뭔가요

 

2.시스템,바이오스 전부 8기가 인식되는데 왜 점유율 50%이상을 안쓰는건가요 (이상으로되면 메모리부족메시지출력)

 

3.어플리케이션들 끼리 충돌이라 가정하면 블루스크린이나 비정상종료
   떠야지 왜 메모리사용 만 제대로 못하는건가요? (메모리 접근 문제나 누수,충돌 문제일시)

 

4. 메모리 점유율 테스트 하는법없나요?(기본 설치된 윈도유 메모리테스트 실행결과 이상없음....
    필요한건 점유율 100% 되는지 확인)
 
5.메모리 부족메시지가 발생할 때 실행한 어플리케이션들의 목록입니다 의심가는게있나요? 
 - 오라클11G, Toad, PDF, 크롬, 이클립스, JAVA VM 


답변 1.

 

윈도우 아키텍처가 디스크와 메모리를 합해서 사용하는 방식이기 때문에

가상메모리 즉 디스크 메모리를 많이 사용합니다.

 

우선 원인을 찾아 봐야 겠군요

작업관리자에 보시면 리소스 모니터를 열어서 메모리 탭의 커밋을 보이도록 열 선택을 해서

각 프로세스 별로 커밋이 얼마나 잡혀있는지 확인을 한 번 해보세요

 

 

커밋크기는 가상메모리와 메인메모리의 합산입니다.

 

프로세스의 메모리 점유율을 체크를 하려면

 http://technet.microsoft.com/ko-kr/sysinternals/bb795533

 

이 주소에 가셔서 프로세스모니터 , 프로세스 익스플로러를 다운받아서 체크를 해보세요.

프로세스 모니터의 경우 도움이 많이 될 겁니다.

 

 

그리고 운영체제는 기본적으로  자원을 반 이상 쓰면 다운을 시키는게 정상입니다.

이미 메모리가 할당되어서 다른 프로그램이 못쓰는데 의미가 없지요..

 

사용 중인 프로그램 중에서는 별로 문제 될 것 이 없을 것 같네요.

 

 

질문 2.

 

리소스 모니터로 확인 시 대기중이 2기가 여유가 1.8기가 라고뜨는데요 

그런데도 메모리 부족이라는데 무슨 싱황인거에요?

 

답변 2.

 

프로세스가 진행할 때 ..

윈도우에서 프로세스에게 메모리할당을 하는데..

 

이것이 커밋인데... 현재 사용하지 않고 있더라도..

다른 어플리케이션과 출동을 피하기위하여 많이 잡아두는데...

작업관리자에서 커밋의 크기를 체크할 수 있습니다.

 

확실하게 체크할 수 있는것은  sysinternal 사의 process minitor를 이용하면

실시간으로 프로세스와 핸들 스레드의 상황이 보이니까

이 유틸리티를 이용해서 체크를 해보세요..

 

위의 답변에서 말씀은 드리지 않았는데..

바이러스도 한번 체크를 해보세요...

 

작업관리자에 떠 있는 프로세스는 아시겠고..

svchost.exe에 딸려 있는 dll 파일들도 체크를 해보는 것이 좋겠습니다.

이것은 process explorer로 보면 해당 프로세스에 dll 파일까지 체크 할 수 있습니다.

 

일반적으로 메인메모리를 운영체제가 얼마나 사용할 까에 대한 궁금증을 제가 90년대 부터

죽 들어온 질문 입니다만...

 

운영체제라는게 프로그램을 실행시켜야 되고..

만약 프로그램을 실행하다가 갑자기 종료가 되면 데이타를 손실이 되겠지요

도스 시절에 무지 막지 하게 이런일 들이 많았습니다.

하드웨어의 기술도 그닥...

소프트웨어도...

 

윈도우로 넘어오면서 3.1 까지는 마찬가지 현상이었다가..

95, 98부터 갑자기 프로그램이나 윈도우가 종료가 되도..

데이타를 살려 내는 기술들이 나오더군요..

 

종료 직전에 데이타가 남아 있었을 텐데..

가정을 해보면 ram에서 모든 데이타를 가지고 있었다면 정전이나 오류에 의해서

종료가 되었을 경우 다시 복구가 되었을 까요..

메모리를 디스크과 같이 사용하고 있었기 때문에 ROM 인 디스크 영역에 보관하고 있던

메모리 영역의 이미지를 다시 불러와서 복구를 시킬 수 있던 거지요.

 

그럼 프로그램을 만드는 입장에서 생각을 해보면 ..

 

운영체제의 역할은 프로그램을 안정적으로 돌리는 겁니다.

그럴 려면 멀티태스킹 환경에서 과연 하드웨어 리소를 하나의 프로그램에 다 준다면

어떤 일이 일어날 것을 뻔히 알텐데.. 그런 파일시스템이나 메모리구조를 만들 수가 없을 겁니다.

 

경험상 볼 때 메모리를 절반 이상을 계속 사용한다면

어느 시점에서는 다시 프로그램을 닫거나 재부팅해서 리프레시를 시켜야 할 겁니다.

 

질문 3.

 

메모리를 반만 사용한다는게 이해가안되네요 집에 데스크탑은 메모리 점유율 99% 까지 올라가거든요  

커밋은 mmu가 매핑하고 있는 걸 말하는거 아닌가요?

가상메모리 페이징파일 사이즈는 4기가로 주었고 가상메모리 사이즈를 늘리면 메모리부족 메시지는 나오지 않습니다

물리 메모리만 50%도 안쓸 뿐이죠 

 

답변 3.

 

운영체제가 메모리를 반반 사용한다는 것은 사용자가 운영체제를 사용할 때 주의 사항이었습니다.

의미가 잘못 전달 되었네요..

 

가상 메모리는.

프로그램의 실행했다 종료 후에도 이미지로 가지고 있다가 빨리 실행하는 캐시기능..

기타 메모리 충돌 방지 등등으로 사용되지요.

그래서 프로세스의 실행파일 크기 보다  큰 가상메모리주소가 잡히게 됩니다.
 

물리적인 메모리가 많아도 윈도우에서 자체적으로 가상메모리주소를 사용합니다.

윈도우 내부의 메모리 설계가 그렇게 되어 있습니다.

 

현재 가상페이지 크기를  4G정도로 잡으신거 같은데.

페이징크기를 메인메모리의 1.5배수를 줄 수 있으니까..

크게 잡아보시고 체크를 해보도록 하지요..

 

작업관리자의 여유분의 메모리와 캐시된 메모리 숫자가 나오는데..

실제로는 더 복잡한 것이 메모리 현황이고 메모리 부분은 경험적으로 다루는 요소가 많기 때문에...

 

메모리 누수가 의심되면 memory leak 관련된 툴을 검색해서 사용해보는 것도 좋겠네요.

=================== 

 

마이크로소프트 ANSWERS에 답변한 내용인데...

도움이 될 것 같아서 올려 봤습니다.

 

현재도 같은 질문을 가지고 계신 분이 많은 것으로 압니다.

꺼꾸로 윈도우도 하나의 제품인데..

제조사 입장에서 보면 안정성을 담보가 되어야 할 겁니다

무수히 많은 하드웨어 드라이버와 프로그램들이 메모리에서 돌아가는데...

 

메모리를 정확하게 컨트롤하는 것은 불가능 합니다.

당연히 롤이 필요한 것이고 그 롤에 맞춰서 사용자가 사용하면 되겠지요..

 

윈도우를 오류를 보면 대부분 용량을 넘치게 사용을 합니다.

어떻게 그렇게 사용 할 수 있는지 만든 개발자들도 놀랠 때가 많습니다.

사용 상의 습관을 조금 씩만 바꾸면 안전하게 사용할 수 있을 텐데 ... 말입니다.