2016-07-14 6 views
2

私は、Javaプロセスが消費するメモリの量をデバッグしようとしています。私が間違っているなら、私を修正してください。このtopコマンドを正しく読んでいますか?

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"のmanページは、%MEMを

"利用可能な物理メモリのうち現在使用されている共有"と定義しています。

そのため、使用可能なシステムメモリの合計(物理的ではない仮想メモリ)。

関連する問題