Java中的内存泄漏(Swing)

Java中的内存泄漏(Swing),java,swing,memory-leaks,Java,Swing,Memory Leaks,我的定制JPanel保留了大量的int数组,如下所示: (来源:) 我认为这是图形对象未被分解的结果,但即使处理了我使用的每个图形对象,内存问题仍然会发生 如果我强制堆转储(并且数组被标记为不可访问),垃圾收集器将删除对象。但是,这种行为会导致Java达到较高的内存分配(~700MB) Swing /JPANS/< P> > P>中有其他常见的源代码,而不是自定义 jPuth,考虑使用 jTab< /COD>,它使用只显示的单元格。此外,一个合适的内存管理器可能允许您最小化数据存储所需的内存。

我的定制JPanel保留了大量的int数组,如下所示:


(来源:)

我认为这是图形对象未被分解的结果,但即使处理了我使用的每个图形对象,内存问题仍然会发生

如果我强制堆转储(并且数组被标记为不可访问),垃圾收集器将删除对象。但是,这种行为会导致Java达到较高的内存分配(~700MB)


Swing /JPANS/< P> > P>中有其他常见的源代码,而不是自定义<代码> jPuth<代码>,考虑使用<代码> jTab< /COD>,它使用只显示的单元格。此外,一个合适的内存管理器可能允许您最小化数据存储所需的内存。最后,<代码> JTAB< /COD>以一种可能使大型数据集更易于用户管理的方式支持NG。

而不是自定义<代码> jPuth<代码>,考虑使用<代码> jTab< /COD>,它使用只到可见的单元格。此外,一个合适的内存管理器可能允许您最小化数据存储所需的内存。最后,<代码> JTAB< /COD>以一种可能使大型数据集更易于用户管理的方式支持NG。

而不是自定义<代码> jPuth<代码>,考虑使用<代码> jTab< /COD>,它使用只到可见的单元格。此外,一个合适的内存管理器可能允许您最小化数据存储所需的内存。最后,<代码> JTAB< /COD>以一种可能使大型数据集更易于用户管理的方式支持NG。

而不是自定义<代码> jPuth<代码>,考虑使用<代码> jTab< /COD>,它使用只到可见的单元格。此外,一个合适的内存管理器可能允许您最小化数据存储所需的内存。最后,

JTable
以某种方式支持ng,这可能会让用户更易于管理大型数据集。

但这不是侦听器的结果-频繁呈现到单个JPanel时会出现这种情况,而不会更改JPanel或其他任何内容。显示屏上显示“无法访问”。是什么让你认为它们是“保留的”?嗯,保留可能是个错误的词。我的意思是GC没有以任何特定的速度删除它们,这会导致堆大小急剧增加。除非您看到
OutOfMemoryError
,否则很可能是垃圾收集器过于保守。不要沉迷于内存配置文件。这并不是监听器的结果——它发生在频繁渲染到单个JPanel时,而不是更改JPanel或其他任何东西。屏幕上显示“不可访问”。是什么让你认为它们是“保留的”?嗯,保留可能是个错误的词。我的意思是GC没有以任何特定的速度删除它们,这会导致堆大小急剧增加。除非您看到
OutOfMemoryError
,否则很可能是垃圾收集器过于保守。不要沉迷于内存配置文件。这并不是监听器的结果——它发生在频繁渲染到单个JPanel时,而不是更改JPanel或其他任何东西。屏幕上显示“不可访问”。是什么让你认为它们是“保留的”?嗯,保留可能是个错误的词。我的意思是GC没有以任何特定的速度删除它们,这会导致堆大小急剧增加。除非您看到
OutOfMemoryError
,否则很可能是垃圾收集器过于保守。不要沉迷于内存配置文件。这并不是监听器的结果——它发生在频繁渲染到单个JPanel时,而不是更改JPanel或其他任何东西。屏幕上显示“不可访问”。是什么让你认为它们是“保留的”?嗯,保留可能是个错误的词。我的意思是GC没有以任何特定的速度删除它们,这会导致堆大小急剧增加。除非您看到
OutOfMemoryError
,否则很可能是垃圾收集器过于保守。不要沉迷于记忆档案。