Ubuntu: 무료 -lh 출력을 최상위 명령 출력과 연관시킬 수 없습니다.

Ubuntu: 무료 -lh 출력을 최상위 명령 출력과 연관시킬 수 없습니다.

free -lh 명령을 사용하여 메모리 사용량을 확인하고 있는데 다음과 같은 결과가 표시됩니다.

             total       used       free     shared    buffers     cached
Mem:           62G        29G        33G       278M       335M        19G
Low:           62G        29G        33G
High:           0B         0B         0B
-/+ buffers/cache:       9.1G        53G
Swap:          15G         0B        15G

보시다시피 사용된 메모리는 29GB이고 사용 가능한 메모리는 33GB이지만 top명령을 사용하여 동일한 것을 확인하면 다음과 같은 출력이 표시됩니다.

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
23555 glassfi+  20   0 19.896g  5.270g  55092 S   0.0  8.4 121:16.24 java
 2457 hg+       20   0 20.294g  981344  20588 S   0.0  1.5   6:00.18 java
 2615 hg+       20   0 20.294g  950520  20560 S   0.0  1.4   0:22.18 java
 1992 tomcat6   20   0 5783768  518860  20976 S   0.0  0.8   8:05.15 java
.................................................

위의 결과를 보면 glassfish는 19GB RAM을 사용하고 hg+는 20GB RAM을 사용한다는 것을 알 수 있는데, 이는 39GB 이상의 RAM이 사용된다는 의미입니다.

내 질문은 왜 free -lh 명령이 29GB RAM만 사용되었는지 표시하는 것입니다.

답변1

"VIRT" 열은 프로세스에 있는 메모리 양을 보여줍니다.할당된, 실제로 사용하는 양보다는. 프로세스는 사용하는 것보다 더 많은 메모리를 할당할 수 있습니다. 이는 큰 힙을 할당하는 경향이 있지만 반드시 모든 것을 사용하지는 않는 Java 프로세스의 경우 특히 그렇습니다. "RES" 열에는 사용한 공간의 양이 표시됩니다. 즉, 프로세스에서 사용하는 공간은 5GiB 이상 glassfish이고 각각 ​​1GiB 미만입니다 hg.

관련 정보