【问题标题】:JavaFX memory not freed after deleting mesh删除网格后未释放 JavaFX 内存
【发布时间】:2017-03-09 08:21:25
【问题描述】:

我有一个带有 3D 子场景的 javafx 应用程序,它显示 3D 对象。导入后,对象将保存在 Trianglemesh 中并添加到 Meshview 中的场景中。 我注意到当我导入一个 100mb+ 3D 文件时,内存使用量按预期增加了很多,但是当我删除网格视图和三角形网格时,内存使用量并没有下降太多。

我使用了 visualvm 来确认它是使用过的堆,它不会下降太多。 第一点是导入后添加到场景中的 300mb 3D 文件。第二点是meshview从场景中移除并被GC收集的地方。

在对 IntelliJ 的内存进行更多调查后,我确认对网格视图和三角形网格的引用已经消失。然而大量的 Vector3f 和 MeshVertex 对象仍然存在。这些引用由 MeshTmpView class 的实例持有

既然是javafx内部类,有没有办法清除这些缓存?

【问题讨论】:

  • 您在哪个 Java 版本上验证了这一点?
  • Java 版本 1.8.0_92

标签: memory-management javafx garbage-collection


【解决方案1】:

有一个已经存在的问题https://bugs.openjdk.java.net/browse/JDK-8089605 已被关闭,原因是“应用程序应为动态网格使用新的用户定义的法线格式以避免高内存和 CPU 使用率。”,请您帮忙检查随附的测试用例和报告,让我们知道您所面临的问题是否相同。如果不是请分享帮助我们更好地评估的测试用例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    相关资源
    最近更新 更多