EventBus和Swing JFrame垃圾收集?

时间:2015-02-25 01:19:30

标签: java swing garbage-collection guava event-bus

我正在重构Swing应用程序以使用Guava的EventBus。 Swing应用程序基本上运行一个决策过程,在JFrame中显示大量结果,然后在JFrame关闭后进行处理。现在它还订阅了一个EventBus来处理用户对数据的操作。

我的问题是这个。我担心EventBus可能会在关闭后持有对JFrame及其所有内部引用(包括所有模型数据)的引用。是否足以添加一个WindowListener来取消订阅EventBus,因此垃圾收集可以释放数据和底层模型?或者这是我不需要担心的事情?

1 个答案:

答案 0 :(得分:2)

您需要unregister之前注册的所有组件no WeakEventBus

请注意,取消注册对象

@throws IllegalArgumentException if the object was not previously registered.

除非对象没有@Subscribe方法。 Javadoc并不精确,因为注册和取消注册此类对象都不做任何事情(并且永远不会抛出)。