我在某个程序中使用 Hotspot 的 GC 遇到了一些奇怪的事情。有时,似乎清除 GC 几乎就死了,每次 Eden 空间填满时,只剩下标记-清除 GC 运行。不用说,这对性能来说是可怕的。我还没有设法弄清楚这个问题发生的条件。
现在看看具有这种行为的 JVM,老一代是 170 MB(已使用和最大),并且永远不会在集合中增长或缩小,伊甸园一代是 85 MB,Survivor 空间从未使用过(我猜是与 scavenge GC 未运行一致),分配的总堆大小为 256 MB(显然,匹配 Old+Eden)。
关于可能导致这种情况的任何线索?