最近app的內存狂增,運行過一段時間後,內存會一直增大,雖然不會影響崩潰,可是很影響心情,因此作了一下內存優化工做,總結一下以下:web
由淺入深,一步步來。緩存
一.去除沒用的變量,浪費空間。analyze工具對工程分析,而後對分析結果從上到下進行處理。cookie
2、去除內存泄露 Leaks工具分析,對內存泄露的地方進行處理app
3、在manager層持有navigation,致使navigation不釋放,全部的界面不釋放,去除manager層的navigation成員變量。規範處理,邏輯層不操做界面工具
4、界面不釋放(dealloc方法不執行)優化
一)、由於循環引用致使界面不釋放url
一、nstimer沒有invalidate ,viewcontroller一直不釋放內存
二、block 循環引用,,viewcontroller一直不釋放webview
三、delegate 循環引用,viewcontroller一直不釋放開發
二)、界面中某些特殊的空間不釋放,致使viewcontroller一直不釋放。
_jjgView = [[JJOrsLZView alloc] initWithTarget:self action:@selector(didSelectGift:)];
_jjgView.delegate = self;
[_jjgView showFromGoodsDetail:YES];
- (void)showFromGoodsDetail:(BOOL)isFromGoodsDetail{
UIWindow *window = [[UIApplication sharedApplication] keyWindow];
[window addSubview:self];
}
_jjgView這個view是加載在UIWindow上面,一直不釋放,而當前的viewcontroller又持有_jjgView。致使當前的viewcontroller一直不釋放,因此要對這個_jjgView處理一下,不使用的時候,使它先釋放掉。
5、當工程開發的比較久的時候,會引入不少的東西,運行過程當中會產生緩存文件,例如sdimageview、webview、js等.當不使用的時候,或者必要的時候將這些組件產生的緩存清除。
一、sdimagecache
二、JsMethodSignaturecache
三、webkitcachemodelpreferencekey
四、allcookies urlcache