老生常谈, 内存泄漏和优化是个古老的话题。 提高码农的经验和代码水平是根本, 外在的工具是辅助手段。 常见的手段包括Android原生的严苛模式、Eclipse公司提供的Java内存分析工具MAT、主流的三方库如LeakCanary, 该三板斧功夫是Android码农要掌握的基本本领。
简单的讲:
内存泄漏就是申请了资源,用完后没释放,并可能导致Out Of Memory问题;在Java语言中就是引用没释放(PS:Swift也是通过引用计数使用自动内存回收机制, 大道同源)。
内存优化就是尽量少占用内存,包括服务、线程、缓存、实例对象等所有耗费内存的东西。
在分析内存泄漏时,可以借助工具或命令查询进程内存的变化, 尤其要注意内存抖动的情况! 即内存忽上忽下。
1、建议在项目里添加如下代码, 作用是开发模式下执行严苛模式。 严苛模式可以在符合条件时让程序崩溃并输出日志,从而找到内存泄漏的地方。
在build.gradle文件里声明RUN_MODE变量:
android {
……
buildTypes {
debug {
applicationIdSuffix ".debug"
versionNameSuffix "-debug"
buildConfigField("String"