如何在Vaadin中不使用内存泄漏的情况下使用eventbus?

时间:2015-09-15 20:27:17

标签: java spring events memory-leaks vaadin

我们将Spring与Vaadin一起用于UI框架。我们希望让我们的UI组件监听事件的全局事件总线。

但是这有问题,到目前为止我们所看到的事件系统都使用强引用来注册监听器。这意味着即使Vaadin发布了组件,它也永远不会被垃圾收集,并造成内存泄漏。

我们尝试使用detach取消注册组件。这样做的问题是,当您不查看组件时,标签页等组件会分离组件,因此他们不会获得更新。

我们一直在使用Google Guava EventBus,我刚刚测试了弹簧JMS支持和Reactor支持。我无法让@JmsListener"prototype"合作,而且我们的用例中,Guava和Reactor都会泄漏内存。

是否有一个好的事件系统使用弱引用来保留侦听器?或者有一个好的地方可以将取消注册挂钩到vaadin?有没有我想不到的模式可以帮助我们解决这个问题?

注意:我意识到问题听起来没有重点我正在寻找问题的解决方案,并试图避免只回答我认为正确答案应该是的答案。

0 个答案:

没有答案