关于 Ubuntu LTS 14.04 上 Java 进程的内存使用情况解释问题

关于 Ubuntu LTS 14.04 上 Java 进程的内存使用情况解释问题

我正在关注这个检查 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

相关内容