【发布时间】:2019-05-01 15:28:06
【问题描述】:
我们继承了一个在生产中运行的系统,最近每 10 小时就开始出现故障。基本上,如果系统一分钟无响应,我们的内部软件就会标记出故障的系统。我们发现我们的问题是我们的 Full GC 周期持续了 1.5 分钟,我们使用了 30 GB 堆。现在的问题是,我们无法在短时间内进行很多优化,也无法快速划分服务,但我们需要尽快摆脱 1.5 分钟的停顿,因为生产中的这些停顿导致我们的系统出现故障。对我们来说,可接受的延迟是 20 毫秒,但不会更多。调整系统的最快方法是什么?减少堆以频繁触发 GC?使用 System.gc() 提示?还有其他解决方案吗?我们使用 Java 8 默认设置,并且我们拥有越来越多的用户 - 即创建的对象越来越多。
一些 GC 统计数据
【问题讨论】:
-
如果您的 JVM 支持,请尝试其他 GC 算法之一。
-
Full GC 真的能成功释放很多空间吗?
标签: java garbage-collection jvm