我有一个在 Apache 后面的 JBoss 上运行的 Java 网络应用程序(通过 mod_jk),我看到了一些非常奇怪的 GC 行为。我在这个问题上附上了一张图表。以前有没有人见过类似的 GC 行为?它是 Java 6,在服务器级机器上根据人体工程学进行默认 GC 调整。谢谢。
注意:上图是全尺寸版本的链接。该图是使用 GCViewer 生成的.
最佳答案
问题似乎是即使在完全垃圾回收之后系统也无法恢复足够的内存。这也有将对象提升到不真正属于那里的长期和幸存者空间的负面影响。
老年代的大小应该随着时间的推移稳定下来,大多数对象(或者至少应该)是非常短暂的。如果你发现老年代不断增长,那么可能某处存在资源泄漏。从您的图表看来,某些分配似乎正在使系统越过边缘并进入 gc 死亡螺旋。
试着了解正在创建的对象,更重要的是,了解它们停留了多长时间。这将使您最好地了解应该查看的位置。
关于java - 帮助处理非常奇怪的 Java GC 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/771920/