Java UI应用程序:CPU增长缓慢

时间:2018-03-25 09:34:54

标签: java garbage-collection profiling cpu-usage memory-profiling

我想了解:正常情况下,工作java UI应用程序的CPU使用率正在缓慢增长(从< = 1.5%开始,48小时后:< = 10%)。在dumpdump调查期间,我没有看到内存泄漏。

虽然,如果我执行gc(使用jvisualvm)并查看增量(示例内存部分),WeakReference,WeakListenerImpl等类仍在增长(缓慢)。

此外,问题是主要垃圾收集过于频繁(实际上每秒钟),但最初几个小时情况正常。

这种应用程序行为可能是什么原因?

JVM: -Xms128m -Xmx256m

GC: 默认为jdk 1.8

提前谢谢!

jvisualvm jvisualvm2

1 个答案:

答案 0 :(得分:0)

  

此外,问题是主要垃圾收集过于频繁(实际上每秒钟),但最初几个小时情况正常。

考虑增加最大堆大小(Xmx),以便为GC提供更多的喘息空间。

  

虽然,如果我执行gc(使用jvisualvm)并查看增量(示例内存部分),WeakReference,WeakListenerImpl等类仍在增长(缓慢)。

有两种可能性,要么弱引用本身被清除,但参考对象不会从引用队列中出队(这通常会导致随着时间的推移而出现非常缓慢的泄漏)或某些东西对对象持有强烈的引用。

您应该进行堆转储并检查是什么使得累积对象可以从GC根目录到达。