不确定是否是内存泄漏 (ARC)



我正在编写自定义动画,我怀疑我有内存泄漏,但我不确定。每次运行给定的动画时,内存都会上升一点,但不会下降。为了确定,我做了一个测试:

NSLog(@"%@", self.weakanim);
// The animation collection to run
HyAnimationCollection * collection = [[HyAnimationCollection alloc] init];
self.weakanim = collection;

它首先记录nil,然后总是记录一个地址。所以这里有两个指标:

  1. 内存从9.7MB开始,每运行10次动画就会增加0.1MB。我测试了大约12MB。现在,是应该每次都释放内存,还是ARC(比如JVM的垃圾收集器)只是周期性地释放内存?也就是说,也许这不是一个泄漏,但ARC还没有发布,因为我没有达到一定的数量
  2. 我将weakanim声明为weak,只是想看看上一个动画集是否正在发布,但同样的问题仍然出现:ARC是否还没有发布
  1. ARC不像JVM那样工作。最接近的是当它使用"自动释放池"时。在这种情况下,直到运行循环结束,对象才会相关。如果可以看到动画正在运行,那么运行循环很可能正在运行,并且应该定期刷新池。

  2. 显示是否存在泄漏的更好方法是在HyAnimationCollection类的dealloc方法中放置断点。如果你调查的其余部分是正确的,我猜它从来没有被调用过。您可能在代码中有一个保留循环。

最新更新