【问题标题】:Eden space usage constantly increasing when using Swing使用 Swing 时 Eden 空间使用量不断增加
【发布时间】:2012-03-19 08:30:51
【问题描述】:

我是 JVM 领域的初学者,但我注意到当使用 Swing 组件(如 JFrame)时,Eden 空间使用量不断增加(我想是在恒定速度下,因为在 VisualVM 中绘制的图形是上升直线行),直到 GC 将其发送回最低点。由于 Eden 空间用于新创建的对象,我想知道是什么在不断地创建这些对象,如果没有 Swing 组件,同样的效果是否仍然会发生。

[编辑]

查看堆转储后,我发现创建的对象是 char[] 和 int[] 类型。这些对象有什么用?

【问题讨论】:

    标签: java swing garbage-collection jvm


    【解决方案1】:

    JVM 在 Eden 空间中创建新对象,所以如果它直线上升直到 GC 将其清除就可以了。 Java 内存是按“代”管理的,对象会根据它们的年龄从最年轻的一代(Eden)移到 Perm。

    Tuning Garbage Collection with the 5.0 Java[tm] Virtual Machine 是一篇关于 Java 内存管理的好文章。

    【讨论】:

    • 感谢您的回复。我知道新对象是在伊甸园空间中创建的,但在这种情况下它们是什么?它们是在等待输入事件时由事件调度线程创建的,还是由其他守护线程创建的?
    • 您需要使用 Profiler 来找出实际创建的内容。试试netbeans.dzone.com/vvm-displaying-java-memory-pool-stats
    【解决方案2】:

    这个问题实际上可能是由 VisualVM 分析引起的,请参阅this

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-17
      • 2020-02-29
      • 2011-06-14
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      相关资源
      最近更新 更多