我想了解:正常情况下,工作java UI应用程序的CPU使用率正在缓慢增长(从< = 1.5%开始,48小时后:< = 10%)。在dumpdump调查期间,我没有看到内存泄漏。
虽然,如果我执行gc(使用jvisualvm)并查看增量(示例内存部分),WeakReference,WeakListenerImpl等类仍在增长(缓慢)。
此外,问题是主要垃圾收集过于频繁(实际上每秒钟),但最初几个小时情况正常。
这种应用程序行为可能是什么原因?
JVM: -Xms128m -Xmx256m
GC: 默认为jdk 1.8
提前谢谢!
答案 0 :(得分:0)
此外,问题是主要垃圾收集过于频繁(实际上每秒钟),但最初几个小时情况正常。
考虑增加最大堆大小(Xmx
),以便为GC提供更多的喘息空间。
虽然,如果我执行gc(使用jvisualvm)并查看增量(示例内存部分),WeakReference,WeakListenerImpl等类仍在增长(缓慢)。
有两种可能性,要么弱引用本身被清除,但参考对象不会从引用队列中出队(这通常会导致随着时间的推移而出现非常缓慢的泄漏)或某些东西对对象持有强烈的引用。
您应该进行堆转储并检查是什么使得累积对象可以从GC根目录到达。