2016-07-14 46 views
2

我想調試我的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選項,以便其他進程可以獲得更多內存。

+1

'Xmx'是「最大限制」。它不是「分配太多」,而是「不要多分配」 –

+1

%MEM是相對於系統總內存使用的實際內存的百分比。 –

+0

爲什麼不在JDK中使用Java VisualVM? – mariusz2108

回答

1

不,%MEM列中的10.2%並不意味着它分配的JVM的10.2%。 「top」不知道您使用的是什麼JVM啓動選項。 「top」的手冊頁將%MEM定義爲

「任務當前使用的可用物理內存份額」。

所以它的總可用系統內存(物理不是虛擬的)。

相關問題