我正在对遗留 Java 产品进行一些分析,并使用 YourKit 查找内存泄漏。我插了很多 - 但我一直遇到一个我无法解决的问题。
我有很多窗口/对话框,当我关闭它们时(并在它们从 JDialog 派生的情况下调用 dispose)它们只是没有被 GC 处理。YourKit 报告说 GC 的唯一根是"target of sun.awt.windows.WDialogPeer [JNI Global]"。还有一些弱引用似乎主要来自 MetalToolBarUI。大概这些只是因为来自 WDialogPeer 的这一强有力的参考而存在。
有没有人见过这个 - 或者任何人都可以告诉我WDialogPeer如何和或/为什么坚持我的JDialogs / JFrames?我怎样才能清理它?