【发布时间】:2017-09-17 17:34:22
【问题描述】:
我有一个在 Open SDK 1.7.0_95 64 bin 环境上运行的 Java 应用程序,我看到每小时有两次主要的垃圾收集,这会影响应用程序的响应时间,我打算避免它。截至目前,使用 your-kit profile 分析我的应用程序。任何人都可以帮助我解决这些主要 GC 的原因的步骤,以便我可以尽可能避免它。应用程序部署在 Linux 环境下的 Jboss EAP 6.2 上。
OpenJDK 运行时环境 (rhel-2.6.4.0.el6_7-x86_64 u95-b00) OpenJDK 64 位服务器 VM(内部版本 24.95-b01,混合模式)
如果我还有其他需要,请告诉我。 提前致谢! 问候, 迪维亚·加格
【问题讨论】:
-
首先,您可以发布有关您的配置的详细信息。您的堆有多大,您正在使用哪些命令行选项等?没有它并且没有任何分析数据,这是一个无法回答的问题。 old gen 中的长时间停顿通常归结为 GC 运行完全压缩的需要。这是 GC 无法跟上分配速率或堆的过度碎片造成的结果。首先尝试增加堆的大小。还有很多其他的建议,但没有更多信息,没有多大意义。
-
-XX:+UseCompressedOops -XX:+TieredCompilation -Xmx1978m -XX:MaxPermSize=256m -XX:+AggressiveOpts -DOPENSHIFT_APP_UUID=59c0cc814930e9981c000923 -Dorg.jboss.resolver.warning=true -Djava.net。 preferIPv4Stack=true -Dfile.encoding=UTF-8 -Djava.net.preferIPv4Stack=true -Djboss.node.name=9d6nra5nfc4-9d6nra5nfc4.dmp-dev.ficoanalyticcloud.com -Djgroups.bind_addr=127.107.196.129 -Dorg.apache。 coyote.http11.Http11Protocol.COMPRESSION=on -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2
-
嗨,目前我正在使用 3GB 内存的单个 JVM 上测试我的模拟服务,并尝试将堆空间从 1978MB 增加到 3GB,其中主要 GC 频率从每小时两次变为每 1.6 小时一次,这很好,但我正试图完全摆脱它。是否可以 ?发现一些未在次要 GC 中收集并提升为旧 GC 的类。请建议我应该具体分析这些课程还是这个正确的方向?
标签: java performance garbage-collection