首页 > 解决方案 > 在 JBoss 上使用 Liferay 的 Java 垃圾收集问题:GC 执行了多次

问题描述

我们在由 Liferay 6.2 和 JBoss 6.4.5 组成的环境中遇到垃圾收集问题。

服务器运行平稳,GC 进程正常执行良好,但在某一时刻,GC 进程开始执行多次:

GC 持续时间

我们在具有以下内存配置的 16GB 内存服务器中运行: 内存分配

JAVA_OPTS="$JAVA_OPTS -Xms6144m -Xmx6144m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=2048m"

未检测到内存泄漏。

谁能帮我们解释一下为什么会出现这样的 GC 行为?

非常感谢您提前。

标签: javajbossgarbage-collectionliferay-6

解决方案


查看图表,我假设您在 HotSpot JVM 中使用 ParallelGC。

如果实时数据集不适合旧空间大小,ParallelGC 将从分代(年轻/旧)操作模式切换到单空间操作模式。

在单个空间中,每个集合都是 Full GC。

解决方法是增加旧空间。它可以通过增加堆大小或减少新大小(例如-Xmn1g选项)来完成。


推荐阅读