首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javaFX内存释放,javaFX bug?

javaFX内存释放,javaFX bug?
EN

Stack Overflow用户
提问于 2013-02-20 03:20:43
回答 1查看 1.5K关注 0票数 8

我发现在javaFX示例Ensemble.jar中频繁切换页面时,内存会更高,无法释放。这也发生在我的项目中。那是javaFX的错误吗?现在我们的测试人员总是抱怨这个问题。

有什么好办法解决这个问题吗?在javaFX中的“内存释放”中我们能做些什么?

为了解决这个问题,我们所做的是:

  1. 当我们销毁javaFX页面时,将全局变量设置为NULL。
  2. 减少.css文件中“重复大图像”的使用。
  3. 在Platform.runLater()中调用GC。(这似乎有点傻)

但效果还不太清楚,谁能帮助我们呢?

EN

回答 1

Stack Overflow用户

发布于 2015-08-20 13:21:53

这不是JavaFX中的一个bug。

--我想您的内存泄漏是因为在Properties.上使用侦听器

JavaFX使用属性作为观察者模式的实现。当向属性添加ChangeListener时,实际上在属性对象中添加了对侦听器的引用。如果您不调用RemoveListener法来删除此引用,那么只要属性对象本身不是垃圾收集,侦听器就不会被垃圾收集。

我不知道您的代码是什么样子,但我可以做一些假设:

  • 每次切换页面时,都会实例化一个新控制器。
  • 每个控制器实例化一个侦听器对象并将其添加到属性对象中。
  • 切换页时,前一个控制器是垃圾收集的,而属性对象则不是。在属性对象中,有对侦听器对象的引用,因此侦听器对象保留在内存中。切换页面越多,就会越多地实例化不会被垃圾收集的侦听器,内存泄漏就越大。

如果将侦听器添加到属性中,请尝试调用removeListener方法并查看它是否解决了问题。

致以敬意,

西里尔

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14971720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档