ANR

应用程序无响应的弹窗,主要原因是在主线程做了耗时操作

OOM

什么时候OOM

当前占用的内存加上我们申请的内存资源超过了虚拟机分配的最大内存就会抛出Out of Memory

容易混淆的概念

内存溢出:即OOM
内存抖动: 短时间内大量的对象被创建回收,造成堆内存压力,触发更多的GC.
内存泄漏: 进程中的某些对象,已经未被其他对象所引用,但是他们却可以直接或间接引用到GC Root,引用到其他我被回收的对象
进程中无用对象(不再使用的对象)持续占有内存或无用对象内存得不到释放,从而造成内存空间的浪费叫内存泄漏

解决办法

bitmap
图片显示,及时释放内存(释放Native内存),图片压缩,inBitmap,捕获异常
listview
convertview/lru
避免在ondrow中创建对象

了解内存回收机制

UI卡顿

卡顿原理

内存泄漏

内存管理

冷启动优化

其他优化

一.android 不用静态变量存储数据
1.静态变量等数据由于进程已经被杀死而被初始化(由于进程回收后,系统会重新创建application,启动上次用户离开时的activity,造成app从未杀掉系统的假象)
2.使用文件/SP等方式
二.有关SP问题
1.不能跨进程(每个进程维护一份SP副本,进程结束后同步数据)
2.不能存储大数据
1)阻塞主进程
2)大量临时对象
3)常驻内存

序列化.png