0

Java -バージョン

Java バージョン "1.6.0_21" Java(TM) SE ランタイム環境 (ビルド 1.6.0_21-b07) Java HotSpot(TM) 64 ビット サーバー VM (ビルド 17.0-b17、混合モード)

jvm 構成:

-server -XX:+DoEscapeAnalysis -XX:+CMSParallelRemarkEnabled -XX:+UseBiasedLocking -XX:ParallelGCThreads=20 -XX:+UseLargePages -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSConcurrentMTEnabled -XX:SurvivorRatio=8 - XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=15 -XX:ReservedCodeCacheSize=128m -XX:+UseCodeCacheFlushing -XX:NewRatio=3 -XX:+DisableExplicitGC -Dsun.rmi.dgc.client.gcInterval=1800000 -Dsun.rmi. dgc.server.gcInterval=1800000 -Djava.net.preferIPv4Stack=true -Xss1024k -Xms8192m -Xmx8192m -XX:MaxPermSize=1024m -XX:PermSize=1024m -Dremoting.bind_by_host=false -Dorg.jboss.resolver.warning=true - Dclient.encoding.override=UTF-8 -Dfile.encoding=UTF-8 -Dnet.sf.ehcache.skipUpdateCheck=true -Dorg.apache.xerces.xni.parser.XMLParserConfiguration=org.apache.xerces.parsers.XIncludeAwareParserConfiguration

-Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+HeapDumpOnOutOfMemoryError -Djava.net.preferIPv4Stack=true -Dorg.apache. el.parser.COERCE_TO_ZERO=false -Dorg.apache.catalina.connector.Request.SESSION_ID_CHECK=false

32163.991: [CMS-concurrent-mark-start]
32165.339: [CMS-concurrent-mark: 1.318/1.347 secs] [Times: user=6.49 sys=0.39, real=1.35 secs] 
32165.339: [CMS-concurrent-preclean-start]
32165.370: [CMS-concurrent-preclean: 0.030/0.031 secs] [Times: user=0.03 sys=0.00, real=0.03 secs] 
32165.370: [CMS-concurrent-abortable-preclean-start]  CMS: abort preclean due to time 32170.796: [CMS-concurrent-abortable-preclean:
3.737/5.426 secs] [Times: user=10.70 sys=0.31, real=5.43 secs] 
32170.873: [GC[YG occupancy: 754283 K (1887488 K)]32170.873: [Rescan (parallel) , 0.1046140 secs]32170.978: [weak refs processing,
0.0612460 secs] [1 CMS-remark: 5824525K(6291456K)] 6578809K(8178944K), 0.1700560 secs] [Times: user=1.51 sys=0.02, real=0.17 secs] 
32171.100: [CMS-concurrent-sweep-start]
32173.805: [GC 32173.805: [ParNew: 1887488K->209664K(1887488K), 0.3380510 secs] 6928845K->5305271K(8178944K), 0.3385670 secs] [Times: user=1.25 sys=0.05, real=0.34 secs] 
32176.970: [GC 32176.970: [ParNew: 1887488K->209664K(1887488K), 0.1728610 secs] 5660997K->4005785K(8178944K), 0.1734010 secs] [Times: user=1.09 sys=0.10, real=0.17 secs] 
32179.315: [CMS-concurrent-sweep: 6.088/8.215 secs] [Times: user=48.00 sys=2.80, real=8.22 secs] 
32179.315: [CMS-concurrent-reset-start]
32179.507: [CMS-concurrent-reset: 0.192/0.192 secs] [Times: user=1.51 sys=0.22, real=0.19 secs]

CMS-concurrent-preclean abort が原因で CMS-concurrent-sweep の実行に時間がかかるのでしょうか? ユーザーに 48 秒間のワールド ストップを体験させますか? 上記の gc ログからの推論は何ですか。

4

1 に答える 1

1
  • 示されているすべてのフェーズCMS-concurrent-*は、その名前が示すように同時進行であり、したがって STW 一時停止ではありません。CMS Initial MarkおよびCMS Final Remarkは、同時サイクルによって引き起こされた一時停止です。もちろん、若い世代のコレクターには独自の STW ポーズがあります。

  • user=xxxコマンドの出力と同じセマンティクスを持ちtimeます。プロセスがスケジュールされているコアタイムを指し、経過した壁時間と非常に関係があります。realSTW 一時停止の期間に関心がある場合は、探しているものです。

上記の gc ログからの推論は何ですか。

その GC ログに表示される最長の STW 一時停止は、340 ミリ秒続きます。

これは、設定を使用してより明示的にログに記録することもできます-XX:+PrintGCApplicationConcurrentTime。また、これらのログの分析を容易にするGCViewerを確認することもできます。

補足: パフォーマンスが気になる場合は、JVM をアップグレードすることをお勧めします。時間の経過とともに jit の改善が行われています。エスケープ解析は 1.6 ではほとんど機能しませんでした (SA ではなくロック省略のみ)。

于 2016-01-14T20:10:51.333 に答える