【问题标题】:How to clean up FinalizerReference instances created by rajawali LoaderObj.parse()?如何清理由 rajawali LoaderObj.parse() 创建的 FinalizerReference 实例?
【发布时间】:2023-03-21 23:36:02
【问题描述】:
我是新来的 rajawali。
我有来自 Blender 的 570 帧动画并导出到 obj 和 mtl 文件(每个 570 帧)。
我尝试编写一个 android rajawali 应用程序来显示 LoaderOBj 对象的动画。
我写了一个循环来一个一个地显示和隐藏每个 obj。
我发现内存泄漏问题。
在对堆转储和分配跟踪进行故障排除后,我发现 LoaderObj 的 parse() 方法创建了很多 FinalizerReference 实例。
LoaderObj 下没有 reset() 或等效方法。
我该如何解决这个内存泄漏或者我错误地使用循环来显示 obj/mtl 文件的 570 帧?
【问题讨论】:
标签:
android
animation
memory-leaks
.obj
rajawali
【解决方案1】:
您永远不会“清理” FinalizerReference 类的实例,无论是由 rajawali(间接)创建还是以任何其他方式创建。它们可能在垃圾回收期间被系统删除,在垃圾回收期间它们对覆盖 Object 类的 finalize() 方法的类起着至关重要的作用。
FinalizerReference 很可能因为错误的原因引起了您的注意。由于 Android Memory Profiler 报告的 Retained Size 值非常大,因此它经常显示在堆转储的顶部附近。我有investigated 这个,发现这么大的 Retained Size 值是由于 Profiler 对相同少量内存的大量多次计数。