我正在使用以下标志启动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是否未记录?任何指针都深表赞赏
答案 0 :(得分:1)
FullGC
表示Stop-the-World mark-sweep-compact collection。
您正在使用-XX:+ExplicitGCInvokesConcurrent
,此标志告诉JVM在调用System.gc()时使用并发集合而不是STW。
您可以在this文章中查看并发收集器(CMS)的日志示例。
答案 1 :(得分:0)
我一直认为DisableExplicitGC禁用了显式GC,所以你不应该在日志中看到任何内容。
您似乎忙于等待其他事件触发GC。