【问题标题】: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 对相同少量内存的大量多次计数。

    【讨论】:

      猜你喜欢
      • 2020-04-26
      • 1970-01-01
      • 1970-01-01
      • 2014-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-17
      • 1970-01-01
      相关资源
      最近更新 更多