我有一个运行在Apache后面的JBoss上的Java web应用(通过mod_jk),我看到了一些非常奇怪的GC行为。我已经在这个问题上附上了它的图表。以前有没有人看到过类似的GC行为?它是运行在服务器级机器上的Java6,带有来自人体工程学的默认GC调优。谢谢。

注意:上图是全尺寸版本的链接。该图是使用GCViewer生成的。
发布于 2009-04-21 11:03:10
问题似乎是,即使在完全垃圾回收之后,系统也无法恢复足够的内存。这也有负面影响,将对象提升到不属于那里的永久空间和幸存者空间。
老一代的大小应该随着时间的推移而稳定下来,大多数物体都是(或者至少应该是)非常短暂的。如果你发现老一代一直在增长,那么可能是某个地方的资源泄露了。从你的图表上看,一些分配似乎正在将系统推向边缘,进入gc死亡螺旋。
尝试了解正在创建哪些对象,更重要的是,了解它们存在多长时间。这将给你最好的想法,你应该在哪里寻找。
发布于 2009-04-21 10:27:47
我可以看到图像,但无法正确读取X和Y轴上的内容。我假设在JVM运行一段时间后,GC的频率会增加。这可能是因为你在那个时候得到了更多的负载。如果您打开了GC日志,那么您可以在中间检查JVM是否更改了GC策略。
https://stackoverflow.com/questions/771920
复制相似问题