我有一些 JPanels 附加到 JTabbedPane。每个 JPanel 都包含存储在 JTable 中的大量数据。
在 JTabbedPane 中显示选项卡后,加载数据,分配给程序的内存从 16Mb 跳到 60Mb。
关闭任何选项卡(通过jTabbedPane.removeTabAt(selectedIdx)
)时,我注意到分配的内存没有减少。
我做了一个"分析"和"堆内存转储"。结果是:JTable 数据仍在内存中。
- 为什么
jTabbedPane.removeTabAt(selectedIdx)
不释放在添加到 JTabbedPane 对象的面板中创建的所有对象? - 如何解决?
我认为您仍然引用了JTable,例如,您对某些组件使用了addListener并且没有删除它。更难说没有代码。