我是否正确阅读了这个top命令?

时间:2016-07-14 19:23:27

标签: java memory-management shared-memory

我正在尝试调试java进程占用的内存量。如果我错了,请纠正我。

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
11798 root      20   0 17.354g 6.084g 164456 S  38.9 10.2  12:52.04 java

这是一个过程。这就是我启动java应用程序的方式

'-server -Xmx10G -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps'

正如您所看到的,我正在为该应用程序提供10G的内存。但根据帮助页面,%MEM是实际内存使用率的百分比。在这种情况下,我假设它只使用10%的10%?

我之所以这样问是因为,如果它只使用1GB,我可能希望将-Xmx降低到3GB,然后给它10G会有点过分。

我的问题是,我是否正确假设10%是该进程内存的实际使用情况,因此我降低了-Xmx选项,以便其他进程可以获得更多内存。

1 个答案:

答案 0 :(得分:1)

不,%MEM列中的10.2%并不意味着其分配的JVM的10.2%。 "顶部"不知道您使用的JVM启动选项。 " top"的手册页将%MEM定义为

"任务当前使用的可用物理内存份额。"

因此它是可用的总系统内存(物理非虚拟)。