早期的NetBeans版本确实存在这个问题,后来解决了:当某个 TopComponent 被关闭时,如果其中的所有对象引用已经释放,那么该 TopComponent 会在下一次垃圾回收的时候自动释放。
所以编写TopComponent的时候最好 重载以下函数,很有用!
@Override
public void componentOpened() {
// 这里可以做初始化工作
}
@Override
public void componentClosed() {
// 这里可以做清除工作,以便该 TopComponent 在下一次垃圾回收的时候能自动释放
}
@Override
public void finalize() throws Throwable {
// 这里可以打印调试信息检查该 TopComponent 是否已被释放
System.out.println("finalize");
}
测试的时候,可以点击工具栏上的 垃圾回收 按钮强制垃圾回收,检查该 TopComponent 是否已被释放。