【问题标题】:Java UI application: slow CPU growthJava UI 应用程序:CPU 增长缓慢
【发布时间】:2018-09-03 14:11:54
【问题描述】:

我想了解:正在工作的 java UI 应用程序的 CPU 使用率增长缓慢是否正常(从

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

此外,问题是主要垃圾收集发生得太频繁(几乎每秒),但在最初的几个小时内情况正常。

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

JVM: -Xms128m -Xmx256m

GC: jdk 1.8 的默认设置

提前谢谢你!

【问题讨论】:

  • “垃圾回收太频繁”?是不是垃圾太多了?
  • 不,我的错。
  • (即,您的程序是否创建了太多需要垃圾回收的未使用对象?)什么错误?
  • 可能,因为程序在压力下工作(通常会重新启动某些组件)。然而,同样的情况也发生在最初的几个小时。虽然,minor gc 确实经常发生,但major gc 很少发生。
  • 你的jvm是什么?你的 xmlx、xms、gc 参数是什么(默认或自定义)?还要描述应用的类型:web、standalone、proxy...

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


【解决方案1】:

此外,问题是主要垃圾收集发生得太频繁(几乎每秒),但在最初的几个小时内情况正常。

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

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

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

您应该进行堆转储并检查是什么使累积的对象可以从 GC 根访问。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 2013-10-31
    • 2013-12-02
    相关资源
    最近更新 更多