무료/최고 차이. free에는 가상 메모리가 표시되나요?

무료/최고 차이. free에는 가상 메모리가 표시되나요?

free -m내 시스템에는 다음이 표시됩니다.

             total       used       free     shared    buffers     cached
Mem:          3954       3842        111          0        248       2585
-/+ buffers/cache:       1008       2945
Swap:         3811          4       3807

따라서 메모리가 소진된 것처럼 보이지만 top메모리별로 정렬하면 다음과 같은 상위 프로세스가 표시됩니다.

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                              
 8891 minecraf  20   0 2374m 277m 9.9m S    1  7.0   0:12.21 java                                                                                                                                                                  
 8704 root      39  19 2802m 272m  11m S    0  6.9   0:28.73 java      

Java에서 사용하는 가상 메모리는 엄청날 것 같지만 온라인에서 읽어보니 이는 문제가 되지 않습니다. 그래서 제 질문은 이렇습니다. free그렇게 말이 안 된다면 왜 가상 메모리를 표시합니까?

답변1

"Mem" 줄에는 free가상 메모리 사용량이 표시되지 않고 실제 메모리 사용량이 표시됩니다.

의 "RES"(주민용) 및 "%MEM" 열은 top동일한 내용을 보여줍니다.물리적각 프로세스에서 사용되는 메모리입니다.

free 하다사용 가능한 스왑 공간과 사용된 스왑 공간을 표시하고 top"VIRT" 열이 있습니다. 두 가지 모두 중요합니다. 대략적으로 말하자면, 스왑 공간에 물리적 메모리를 더한 것이 가능한 총 가상 메모리 공간입니다. 해당 한계에 도달하면 프로세스가 종료되거나 메모리 할당에 실패하기 시작하고 상황이 나빠질 것입니다.

답변2

가상 메모리를 파일이나 라이브러리에 매핑할 수 있으므로 VIRT 양이 매우 클 수 있습니다. 저는 ~6g VIRT 메모리를 사용하지만 RESident가 59m인 작은 Java 애플리케이션을 실행하고 있습니다.

Java에서 사용하는 가상 메모리가 엄청 큰 것 같은데 온라인에서 읽어보니 문제가 되지 않는다고 합니다.

가상 메모리가 그다지 중요하지 않은 이유는 사용되지 않거나 사용 가능한 상주 메모리가 필요할 때 스왑 공간(하드 디스크 저장소)으로 페이지 아웃되기 때문입니다. 스왑 공간에 있는 것들은 거의 사용되지 않거나 전혀 사용되지 않지만 어딘가에서 참조되기 때문에 거기에 있습니다. 64비트 운영 체제를 사용하는 경우 사용하는 것보다 더 많은 주소를 처리할 수 있으므로 가상 메모리 관리자가 걱정하지 않아도 됩니다.

이 블로그 게시물에는 프로그래밍의 가상 메모리에 대한 몇 가지 의견이 있습니다.http://antirez.com/post/what-is-wrong-with-2006-programming.html

우선, 자주 사용하는 데이터를 RAM에서 HDD로 바꾸면 안 된다. 그래서 자바가 많은 양의 메모리를 할당하는 것은 문제가 되지 않는다는 말을 듣는다.

관련 정보