【发布时间】:2017-03-02 23:32:29
【问题描述】:
我们有一个运行在 java 1.8 上的应用程序在生产服务器上具有高堆利用率,并且发现根本没有发生 Major GC。相同的配置已应用于非 prod 机器,但 Major GC 在那里每隔一小时运行一次。是什么触发了 Major GC,产品上更好的 H/W(更多 CPU)会导致任何问题吗?
java.args=-server -Xms3072m -Xmx3072m -XX:NewSize=1024m -XX:MaxNewSize=1024m -XX:MaxMetaspaceSize=1024m -XX:NewRatio=4 -Dsun.io.useCanonCaches=false -XX:+UseParallelGC -XX:+UseAdaptiveSizePolicy -XX:-CreateMinidumpOnCrash
提前致谢。
【问题讨论】:
-
使用
-XX:+PrintGCDetails启用 gc 日志记录,分析日志,例如如果您想了解更多信息,请使用 gcviewer。没有进一步的数据,很难得出任何结论。 -
如果应用有足够的空闲堆内存,则不会触发Major GC。使用 JConsole(随您的 JDK 提供),您可以检查内存使用情况。
-
触发 Major GC 是你应用程序的实际目的吗?或者,换句话说,有什么问题?
-
@user1550159 找到解决方案了吗?你能给我们指一个吗?任何答案是否有帮助或解决您的问题?谢谢。
标签: performance java-8 garbage-collection jvm heap-memory