我正在关注这个检查 Ram 大小这篇文章介绍了我在 Ubuntu LTS 14.04 上运行的 Cloud Foundry Java 应用程序。据我所知,运行 Java 进程的实例的物理内存为 32g。对于 Java 应用程序,我将堆大小指定为 1g。当我查看top
命令的输出时,我看到它有 3,221,372 KiB,也就是 3g。
是否有一个合理的解释
为什么在物理内存充足的情况下,Java 进程却使用 3g 虚拟内存,并且
为什么 Java 进程使用的内存超过了我指定的 1g?
的结果grep MemTotal /proc/meminfo | awk '{print $2 / 1024}'
32170.2
top
命令输出结果:
Tasks: 5 total, 1 running, 4 sleeping, 0 stopped, 0 zombie
%Cpu(s): 46.2 us, 43.2 sy, 0.0 ni, 1.7 id, 0.3 wa, 0.0 hi, 8.5 si, 0.2 st
KiB Mem: 32942284 total, 27706852 used, 5235432 free, 357028 buffers
KiB Swap: 32949308 total, 2546016 used, 30403292 free. 6546428 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7 vcap 10 -10 3221372 108524 11936 S 1.7 0.3 1:31.17 java
的结果free -g
total used free shared buffers cached
Mem: 31 26 4 0 0 6
-/+ buffers/cache: 19 11
Swap: 31 2 28