私は、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オプションを低くして他のプロセスがメモリを増やすことができると仮定して正しいですか?
「Xmx」は「最大限」です。 「これをあまり配分する」ではなく、「これ以上多くを配分しない」 –
%MEMは、使用されている実際のメモリの、システムメモリ全体に対する割合です。 –
JDKでJava VisualVMを使用しないのはなぜですか? – mariusz2108