我们遇到一个问题,即在JVM上内存使用量逐渐增加,然后这会影响CPU性能。它增加了CPU时间。 我们正在尝试使用堆转储来分析问题。但是想了解什么是典型的程序 - 看着gc log,看堆dump提供了所需的信息。 需要注意的其他事情是什么?
答案 0 :(得分:2)
您可能会发现这篇文章很有用。
答案 1 :(得分:0)
请查看堆转储和GC转储,并尝试分析当GC达到峰值时,任何主要任务都在进行。例如 - 当时在您的服务器上进行的Cron作业等。
您将了解究竟对您的应用产生什么影响。
答案 2 :(得分:0)
我采用的方法是使用内存配置文件来减少GC后保留的内存量和丢弃的垃圾量。减少对象丢弃,可以提高性能并减少配置文件结果中的噪音。
答案 3 :(得分:0)
以下是我们分析问题的方法:
但是最近的代码更改有助于我们解释当前的情况。实际上有趣的是,我们为一些我们分叉的线程增加了超时。这在内部引起了大量并发,结果是增加了内存使用量,因为某些对象现在可以在GC之前保持更长时间。我们的用例支持这种争用的可能性。
总的来说,我能理解的是堆转储,线程转储和最近的更改 - 所有看起来一起帮助我们理解了这个问题。他们中的任何一个人都没有意义。