image.png
image.png

内存会引起的问题

  1. 内存造成的第一个问题是异常. 具体表现

内存造成的第二个问题是卡顿。因为GC会占用很大的资源

应用程序如何绕过dalvikvm heapsize的限制
创建子进程
创建一个新的进程,那么我们就可以把一些对象分配到新进程的heap上了,从而达到一个应用程序使用更多的内存的目的,当然,创建子进程会增加系统开销,而且并不是所有应用程序都适合这样做,视需求而定。
使用jni在native heap上申请空间
native heap的增长并不受dalvik vm heapsize的限制,只要RAM有剩余空间,程序员可以一直在native heap上申请空间,当然如果 RAM快耗尽,memory killer会杀进程释放RAM。大家使用一些软件时,有时候会闪退,就可能是软件在native层申请了比较多的内存导致的。

内存优化(主要思路是避免触发GC)
在内存小的设备上 可以用通过(ActivityManager.MemoryInfo()) 获取到当前内存情况, 使用565.
还有积极归还内存积极响应OnTrimMemory

Bitmap处理
可以使用native 内存来存储图片
内存泄露问题(java 4种内存引用方式 ,软弱虚实)

调查 RAM 使用情况https://developer.android.com/studio/profile/investigate-ram?hl=zh-cn