iOS 中常见的内存泄漏
15 December 2020
iOS 中常见的内存泄漏
内存泄漏(memory leak):是指申请的内存空间使用完毕之后未回收。 内存溢出(out of memory):是指程序在申请内存时,没有足够的内存空间供其使用。
delegate
变量没声明为 weak 类型;NSNotification
没有移除通知;block
强引用捕获外部变量;NSTimer
在释放前未调用[timer invalidate]
,对target强引用;performSelector:afterDelay
只有在runloop为DefaultMode时才能成功,否则会对target强引用;- 提供了release函数的C语言接口;
WKWebView
的addScriptMessageHandler
操作;
目前国内对iOS内存泄漏检测,用的多的主要有:
- Analyzer(静态分析)
- MLeaksFinder (第三方工具)
- Instruments Leaks (动态检测)
参考:
NSTimer解决循环引用的方案
NSTimer问题及各种定时器详解
MLeaksFinder 内存泄漏原理
常见的检测内存泄漏工具
iOS内存泄漏检测步骤
iOS内存优化心得