【问题标题】:JavaFx Webview memory leak on events事件上的 JavaFx Webview 内存泄漏
【发布时间】:2016-03-16 08:24:11
【问题描述】:

我们目前正在开发一个严重依赖 JavaFx 网络视图的应用程序。布局由 FXMLLoader 加载,并包含一个带有多个事件的 webview,如 OnScroll、OnMousePressed 和 OnMouseReleased。

关闭包含此布局的舞台后,舞台从内存中正确释放,但控制器类保留。我在 VisualVM 的帮助下调查了这个问题。

每次我打开和关闭一个阶段时,都会有一个新的控制器类被加载到内存中并保留在那里。

在下面的屏幕截图中,您可以看到离我的控制器类最近的 GC 根。突出显示的是我的 webview 的 OnScroll 事件。如果我要删除此事件,则下一个事件 (OnMouseReleased) 将在此跟踪中取代它。

我们使用的是 java 版本 jdk1.8.0_65 和 JavaFx 版本 8.0.65-b17。

我不确定我做错了什么,或者它是否是 JavaFx 中的错误。但是,这对我们来说是一个阻碍,非常感谢任何帮助。

祝你好运, 马曾

【问题讨论】:

    标签: java javafx memory-leaks webview


    【解决方案1】:

    我找到了。

    问题不在于 webview 事件。问题甚至不在于 webview 本身。 经过进一步调查,我发现整个场景及其上的每个组件仍在内存中。

    问题是我的布局中的 ProgressIndicator。如果将其设置为不确定状态,则会阻止场景被垃圾收集。在关闭阶段之前将进度重置为 0(并因此使其确定)解决了我的问题。

    【讨论】:

    猜你喜欢
    • 2011-07-15
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-23
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多