我们在由 Liferay 6.2 和 JBoss 6.4.5 组成的环境中遇到垃圾收集问题。
服务器运行平稳,GC 进程正常执行良好,但在某一时刻 GC 进程开始执行多次:
JAVA_OPTS="$JAVA_OPTS -Xms6144m -Xmx6144m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=2048m"
未检测到内存泄漏。
谁能帮我们解释一下为什么 GC 会这样吗?
提前非常感谢您。
最佳答案
查看图表,我假设您正在 HotSpot JVM 中使用 ParallelGC。
如果实时数据集不适合旧空间大小,ParallelGC 将从分代(年轻/旧)切换到单空间操作模式。
在单个空间中,每个收集都是 Full GC。
解决办法是增加旧空间。可以通过增加堆大小或减少新大小(例如 -Xmn1g
选项)来完成。
关于在 JBoss 上使用 Liferay 时出现 Java 垃圾收集问题 : GC executed many times,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60282418/