帮助实现奇怪的Java GC行为

时间:2009-04-21 10:07:43

标签: java garbage-collection

我在Apache后面的JBoss上运行了一个Java Web应用程序(通过mod_jk),我看到了一些奇怪的GC行为。我已经附上了这个问题的图表。之前有没有人见过类似的GC行为?它是Java 6,在服务器级机器上运行符合人机工程学的默认GC调优。感谢。

注意:上图是指向全尺寸版本的链接。该图表是使用GCViewer生成的。

2 个答案:

答案 0 :(得分:5)

问题似乎是即使在完全垃圾收集之后系统也无法恢复足够的内存。这也会产生负面影响,将物品推广到不属于那里的终身和幸存者空间。

老一代的规模应该随着时间的推移而稳定下来,大多数对象都是(或者至少应该)非常短暂的。如果您发现老一代不断增长,那么可能会在某处出现资源泄漏。从你的图表来看,似乎有些分配是将系统倾斜到边缘并进入gc死亡螺旋。

尝试了解正在创建的对象,更重要的是,它们可以停留多长时间。这将让您最好地了解您应该在哪里寻找。

答案 1 :(得分:0)

我可以看到图像,但无法正确读取X轴和Y轴上的图像。我假设在JVM运行一段时间之后GC的频率正在增加。这可能是因为您当时获得了更多负载。如果您已打开GC日志,则可以检查JVM是否已在中间更改了GC策略。