1

次のフラグを使用して Java 1.6.0.32 インスタンスを開始しています

set JAVA_OPTS=%JAVA_OPTS% -XX:+UseConcMarkSweepGC -XX:+UseParNewGC
set JAVA_OPTS=%JAVA_OPTS% -XX:+UseBiasedLocking -XX:+ExplicitGCInvokesConcurrent
set JAVA_OPTS=%JAVA_OPTS% -XX:+PrintGCDetails
set JAVA_OPTS=%JAVA_OPTS% -XX:+PrintGCTimeStamps
set JAVA_OPTS=%JAVA_OPTS% -XX:+PrintGCApplicationStoppedTime
set JAVA_OPTS=%JAVA_OPTS% -XX:+PrintGCApplicationConcurrentTime
set JAVA_OPTS=%JAVA_OPTS% -Xloggc:gc.log
set JAVA_OPTS=%JAVA_OPTS% -XX:+PrintHeapAtGC
set JAVA_OPTS=%JAVA_OPTS% -XX:+HeapDumpOnOutOfMemoryError
set JAVA_OPTS=%JAVA_OPTS% -XX:HeapDumpPath=heap-dump.core
set JAVA_OPTS=%JAVA_OPTS% -server -XX:MaxTenuringThreshold=8 -XX:+CMSIncrementalMode 
set JAVA_OPTS=%JAVA_OPTS% -XX:+CMSIncrementalPacing -XX:+DoEscapeAnalysis 
set JAVA_OPTS=%JAVA_OPTS% -XX:+OptimizeStringConcat
REM set JAVA_OPTS=%JAVA_OPTS% -XX:+UseCompressedOops REM for 64 bit only
set JAVA_OPTS=%JAVA_OPTS% -XX:+UseCompressedStrings -XX:+UseFastAccessorMethods 
set JAVA_OPTS=%JAVA_OPTS% -XX:+PrintTenuringDistribution -XX:+UseStringCache 
set JAVA_OPTS=%JAVA_OPTS% -verbose:gc

アプリの初期化後に完全なガベージ コレクションを明示的に要求し、この手法を使用して完了するまで待ちます。jvisualvm を使用してヒープが大幅に圧縮されることを確認しましたが、完全な GC が gc ログに記録されていないようです。「Full GC」を検索しましたが、結果はありませんでした。-XX:+DisableExplicitGCオフですのでご注意ください。私は何か間違ったことをしていますか?明示的な GC はログに記録されていませんか? 任意のポインタは深く感謝しています

4

2 に答える 2

1

FullGCストップ・ザ・ワールド・マーク・スイープ・コンパクト・コレクションの表示です。

を使用しています-XX:+ExplicitGCInvokesConcurrent。このフラグは、System.gc() が呼び出されたときに STW の代わりに並行コレクションを使用するよう JVM に指示しています。

この記事では、並行コレクター (CMS) のログ サンプルを確認できます。

于 2012-06-08T13:59:01.887 に答える
0

DisableExplicitGC は明示的な GC を無効にしたため、ログには何も表示されないと常に想定していました。

他の何かが GC をトリガーするまで待つのに忙しいようです。

于 2012-06-08T07:19:30.677 に答える