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

时间:2014-09-01 15:12:18

标签: ios objective-c memory memory-management memory-leaks

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

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 个答案:

答案 0 :(得分:2)

  1. ARC不像JVM那样工作。你得到的最接近的是它使用"自动释放池。"在这种情况下,在运行循环结束之前,对象不会相关。如果您可以看到动画正在运行,那么运行循环很可能正在运行,并且应该定期刷新池。

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