我正在重构一个 Swing 应用程序以大量使用 Guava 的 EventBus。Swing 应用程序基本上运行一个决策过程,在 JFrame 中显示大量结果集合,然后在 JFrame 关闭后处理。现在它还订阅了一个 EventBus 来处理用户对数据的操作。
我的问题是这个。我担心 EventBus 可能会在关闭后保存对 JFrame 及其所有内部引用(包括所有模型数据)的引用。添加一个 WindowListener 是否足以从 EventBus 取消订阅它,以便垃圾收集可以释放数据和底层模型?或者这是我不需要担心的事情?