我正在使用以下标志启动 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
我在应用程序初始化后明确请求完全垃圾收集,并使用 this 等待它完成技术。我已经确认使用 jvisualvm 显着压缩了堆,但完整的 GC 似乎没有记录在我的 gc 日志中。我已经搜索过“Full GC”但没有结果。
请注意,-XX:+DisableExplicitGC
已关闭。我做错了什么吗?显式 GC 是否未记录?任何指示都深表感谢
最佳答案
FullGC
是 Stop-the-World 标记-扫描-紧凑收集的指示。
您正在使用-XX:+ExplicitGCInvokesConcurrent
,该标志告诉JVM在调用System.gc()时使用并发收集而不是STW。
您可以在 this 中查看并发收集器(CMS)的日志样本文章。
关于java - 未记录显式 GC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10944283/