生也有涯,知也无涯。这篇文章主要讲述Android内存优化相关相关的知识,希望能为你提供帮助。
android的内存管理方式
- Android系统内存分配与回收方式
- 一个APP通常就是一个进程对应一个虚拟机
- GC只在Heap剩余空间不够时才去垃圾回收
- GC触发时,所有线程都会被暂停!!!
- APP内存限制机制
- 每个App分配的最大内存限制,随设备不同而不同
- 吃内存大户:图片
- 为什么要限制?
- 切换应用时后台APP清理机制
- APP切换时的LRU Cache
- LRU算法:最近使用的排在最前面,最少的可能被清理掉
- GC时,清理时会执行onTrimMemory()回调方法
- APP切换时的LRU Cache
adb shell : 进入Android底层Linux系统命令;
ps :查看系统里面进程的命令;
dumpsys meminfo com.xxx.xxx :查看进程的相关信息
APP内存优化方法
- 数据结构
- 频繁字符串拼接用StringBuilder
- ArrayMap、SpareArray替换HashMap
- 内存抖动
- 再小的Class耗费0.5KB
- HashMap一个Entry需要额外占用的32KB
- 对象复用
- 复用系统自带的资源
- ListView/GridView的convertView复用
- 避免在onDraw()方法里面执行对象的创建
- 避免内存泄漏
- 由于代码瑕疵,导致这块内存,虽然是停止不用了,但依然被其他东西引用着,导致GC无法回收它
- 内存泄漏会导致剩余可用Heap越来越少,频繁触发GC
推荐阅读
- Azure Managed Disk 共享不灵,EventGrid + LogicApp 来搞
- 2017-2018-2 20165233 实验四 Android程序设计
- 将app现有的icon转化成圆角icon
- .netcoreapp 发布到 linux 的问题,vs靠不住
- Comparison of Android versions(strcmp的应用)
- Android lrucache 实现与使用(Android内存优化)
- 95后最爱用的陌生人社交app,竟然是它
- Android Studio 打包AAR和第三方静态库
- android dialog style属性设置