【发布时间】:2014-01-02 05:07:41
【问题描述】:
我的自定义 JPanel 保留了大量的 int 数组,如下所示在 YourKit 中:
(来源:gyazo.com)
我认为这是图形对象未处理的结果,但即使处理了我使用的每个图形对象,内存问题仍然存在。
如果我强制进行堆转储(并且数组被标记为不可访问),垃圾收集器将删除这些对象。然而,这种行为会导致 Java 达到较高的内存分配 (~700MB)。
swing/JPanels 中是否还有其他此类问题的常见来源?
【问题讨论】:
-
这不是侦听器的结果 - 它发生在频繁渲染到单个 JPanel 时,而不是更改 JPanel 或任何东西。
-
显示屏显示“无法访问”。是什么让您认为他们被“保留”了?
-
嗯,保留也许是错误的词。我的意思是 GC 不会以任何特定的速度删除它们,这会导致堆大小猛增。
-
除非您看到
OutOfMemoryError,否则很可能只是垃圾收集器过于保守。不要沉迷于内存配置文件。
标签: java swing memory-leaks