我正在尝试调试我的 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 是实际内存使用的百分比。在这种情况下,我假设它只使用了 10G 的 10%?
我问这个的原因是,如果它只使用 1GB,我可能想将 -Xmx 减少到 3GB,然后给它 10G 会有点矫枉过正。
我的问题是,我假设 10% 是该进程内存的实际使用情况是否正确,因此我降低了 -Xmx 选项以便其他进程可以获得更多内存。
最佳答案
不,%MEM 列中的 10.2% 并不意味着它分配了 JVM 的 10.2%。 “top”不知道您使用什么 JVM 启动选项。 “top”的手册页将 %MEM 定义为
“任务当前使用的可用物理内存份额。”
所以它是总可用系统内存(物理而非虚拟)。
关于java - 我是否正确阅读了这个顶级命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38382598/