GC日志中的(bold)是什么意思:
81296.997: [GC 7431462K->6692307K(8283776K), 1.0975224 secs]
82337.956: [GC 7531219K->6800788K(8283776K), 1.1563326 secs]
83338.712: [GC 7639700K->6898225K(8283776K), 1.0868988 secs]
83339.816: [GC 6899724K(8283776K), 0.1227785 secs]
83351.437: [GC 6911811K(8283776K), 0.4253903 secs]
84363.941: [GC 1859011K->1125589K(8283776K), 0.9137798 secs]
85319.780: [GC 1964501K->1217720K(8283776K), 0.8500309 secs]
我希望在大约 95% 的 Xmx 后日志中出现完整,但我看到的是上面的内容。我的设置如下:
-d64 -Xss384k -Xms8192m -Xmx8192m -XX:ParallelGCThreads=12 -XX:PermSize=512m -XX:MaxPermSize=512m -XX:NewSize=1024m -XX:MaxNewSize=1024m -XX:SurvivorRatio=8 -Xnoclassgc -XX:+DisableExplicitGC -verbose:gc -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseConcMarkSweepGC
让我重新表述一下我的问题:我知道整行的含义,但我的问题是为什么粗线不同,它是什么类型的 GC?我不认为这是年轻一代 GC,如果不是那么这是什么样的 GC?
最佳答案
这看起来很奇怪。粗体字显然属于年轻代 GC。从没有空间被释放的事实以及他们花费的时间很短的事实来看,他们也是失败的尝试,这可能是因为老年代没有足够的空间来保留所有需要的对象。
我觉得奇怪的是下一行:
84363.941: [GC 1859011K->1125589K(8283776K), 0.9137798 secs]
在释放四分之三的内存之间发生了什么?这可能是并行 GC 的日志记录导致的异常,但有些地方不对。
您可以尝试添加 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution
以获得更清晰的 View 。 (当然要结合 -Xloggc:<log file>
选项。)
关于java - GC日志问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5344727/