arc下内存泄漏的解决小技巧

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了arc下内存泄漏的解决小技巧相关的知识,希望对你有一定的参考价值。

一定要注意,我们运行app时,一定要关心内存的使用,尽量不要超过20M,即使有很多图片要显示也绝对不能超过30M。所以运行自己开发的app时多关心内存的使用是个很好的习惯。

对于性能,内存的优化,这个涉及的就太多了。现在先讲讲几个最基本常见的内存泄露下的解决方法。

 

1. instruments

instrument可以报出不少内存泄露的错误,方法:http://www.cocoachina.com/ios/20141203/10519.html,很容易操作。

不过它最大的功能还是可以自己看出哪里内存用了多,从而进行优化。

2. arc的问题

ARC does not manage C-types, of which CGImage may be considered. You must release the ref manually when you are finished with CGImageRelease(image);

这是stackoverflow别人的回答,就是说在arc模式下,C-types的对象需要手动来进行释放

 

arc还会有循环引用等问题,导致对象不能被释放,有个小技巧来处理,可以写下-(void)dealloc设置断点,如果页面跳转没有执行它,那么证明你犯错了,自动计数没有为0,不会释放的,内存会一直增加,需要去找错。

3. image的一些建议

很多图片要加载,不要用队列存储image,要么image存在沙盒里,队列里存地址,要么队列存储缩略图,点击的时候再放大。

最不可取的方法就是本来是一个清晰的大图,可能需要缩小,就直接imageView改变尺寸,这个非常耗内存。

以上是关于arc下内存泄漏的解决小技巧的主要内容,如果未能解决你的问题,请参考以下文章

填坑总结:python内存泄漏排查小技巧

导致内存泄漏的主要场景以及解决方法

ARC CCSprite 内存泄漏

在 ARC 中使用 Blocks 和以某种方式复制的奇怪内存泄漏

ARC 内存泄漏

如何在没有内存泄漏的情况下在 ARC 中的 UIView 之间切换?