Java内存泄漏:WDialogPeer是唯一的强引用-为什么它不使用GC?

Java内存泄漏:WDialogPeer是唯一的强引用-为什么它不使用GC?,java,swing,memory-leaks,awt,yourkit,Java,Swing,Memory Leaks,Awt,Yourkit,我正在对一个遗留Java产品进行分析,并使用YourKit查找内存泄漏。我一直在努力——但我一直遇到一个我无法解决的问题 我有相当多的窗口/对话框,当我关闭它们时(在它们从JDialog派生的情况下调用dispose),它们只是没有被GC调用。YourKit报告GC的唯一根目录是“sun.awt.windows.WDialogPeer[JNI Global]的目标”。也有一些弱引用,它们似乎主要来自MetalToolBarUI。假定这些只存在于WDialogPeer的一个强引用中 以前有人看到过

我正在对一个遗留Java产品进行分析,并使用YourKit查找内存泄漏。我一直在努力——但我一直遇到一个我无法解决的问题

我有相当多的窗口/对话框,当我关闭它们时(在它们从JDialog派生的情况下调用dispose),它们只是没有被GC调用。YourKit报告GC的唯一根目录是“sun.awt.windows.WDialogPeer[JNI Global]的目标”。也有一些弱引用,它们似乎主要来自MetalToolBarUI。假定这些只存在于WDialogPeer的一个强引用中


以前有人看到过吗?或者有人能告诉我WDialogPeer是如何和/或为什么使用我的JDialogs/JFrames的吗?我如何清理它?

是一样的吗?您是否对子面板和框架进行了
dispose()
ed处理?是的,dispose到处都被调用(所有调用都是super)-我已经仔细检查了这一点。还在读另一篇帖子-谢谢:)谢谢你的回复。。。我已经找到了。有一个JDialog作为一个在构造函数中初始化的成员变量保存。尽管正确地处理了这个变量,但派生类也通过对其进行新化来设置这个成员变量,所以它构造了两个JDialogs,但只处理了一个。