删除网格后,JavaFX内存未释放

时间:2017-03-09 08:21:26

标签: memory-management javafx garbage-collection

我有一个带有显示3D对象的3D子场景的javafx应用程序。导入后,对象将保存在Trianglemesh中,并添加到Meshview中的场景中。 我注意到的是,当我导入一个100mb + 3D文件时,内存使用量会如预期的那样上升很多,但是当我删除meshview和trianglemesh时,内存使用率并没有下降太多。

我使用visualvm来确认它是用过的堆并没有太多下降。 memory issue 第一点是导入后将300mb 3D文件添加到场景中的位置。第二点是将meshview从场景中移除并由GC收集。

经过对IntelliJ记忆的更多调查后,我确认对meshview和trianglemesh的引用已经消失。然而,仍然存在大量的Vector3f和MeshVertex对象。这些引用由MeshTmpView class

的实例保存

由于这是一个javafx内部类,有没有办法清除这些缓存?

1 个答案:

答案 0 :(得分:0)

有一个已经存在的问题https://bugs.openjdk.java.net/browse/JDK-8089605已关闭,因为无法修复“应用程序应使用动态网格的新用户定义法线格式以避免高内存和CPU使用率。”,可以请查看随附的测试用例并告知我们您遇到的问题是否相同。如果不善意分享帮助我们更好地发挥作用的测试用例。