1、Android系统内存分配与回收方式
android 系统是多任务系统,通过分时复用的方式,多个应用可以同时在手机上运行
一个APP通常就是一个进程对应一个虚拟机
命令:adb shell ====>ps ====>dumpsys meminfo com.xxx.xxx.xxx
GC只在Heap剩余空间不够时才触发立即回收
GC触发时,所有的线程都是会被暂停
2、APP内存限制机制
每个APP分配的最大内存限制,随不同设备而不同
最大的吃内存大户:图片
APP为什么要限制内存?手机的内存是有限的
3、切换应用时后台APP清理机制
APP切换时后台是通过LRU Cache模式来处理的(LRU Cache算法:最近使用的排在最前面,最少可能的被清理掉)
onTrimMemory()方法:level
int memClass = activityManager.getMemoryClass();
int largeMemClass = activityManager.getLargeMemoryClass();
memClass 和 largeMemClass 一般情况是一样的值
清单文件里可以设置largeHaep值为true,但是,基本不会这样设置,设置了的意义也不大,而且在很多设备上设置是无效的
运行时总的内存Memory:total
运行时空闲的内存Memory:free
运行时最大的内存Memory:max
Float total=Runtime.getRuntime().totalMemory()1.0f/(10241024);
Float free=Runtime.getRuntime().freeMemory()1.0f/(10241024);
Float max=Runtime.getRuntime().maxMemory()1.0f/(10241024);
memClass = largeMemClass = max