我正在运行一个相当内存密集的循环来生成图像,并在内存泄漏/自动释放内存分配时间过长。UIImageView泄漏/自动释放
任何人都可以请解释下面正在举行和autoreleased什么?我已经通过Allocations工具运行了它,并且它的大小增加,直到循环结束并释放所有autorelease对象(正如我从3天的试验和错误中了解的那样)。对于更少的循环来说,这是可以的,但是当我超过200时,它最终会在自动释放之前崩溃。注释掉下面的代码,这种增长停止,仪器图形保持水平与记忆一组量:
for (int l=0;1 < 300; 1++) {
UIImage * Img = [[UIImage alloc] initWithContentsOfFile:Path]; //Path is a NSString pointing to bundlePath and a sample image
UIImageView *ImgCont = [[UIImageView alloc] initWithImage:Img];
//here I usually add the view to a UIView but it is not required to see the problem
ImgCont.frame = CGRectMake(x, y, w, h);
[ImgCont release];
[Img release];
}
我曾尝试没有成功与NSAutoreleasePool包装这一点 - 任何想法我做错了吗?
感谢,
这就是我的想法。一直以来,我一直在努力让自己精神沮丧,现在自下而上去看看记忆在哪里。那么是否有一些乐器只是玩弄技巧?这里是包含上述代码的仪器分配:http://i49.tinypic.com/296dhsg.jpg这里是上述代码被删除的代码:http://i48.tinypic.com/296n7lt。 PNG – Ralphonzo
那么包装循环的内部部分在autorelease池中没有帮助? – mattjgalloway
不幸的不是。似乎略有改善,但仍在缓慢增加,一旦循环完成,就会从第一个链接中看到回落。这是什么让我觉得这是一个Autorelease,但评论似乎指向别处 – Ralphonzo