主要观点总结
本文介绍了Android系统中内存管理的机制,特别是系统可用内存不足时的处理方式和应用可用内存不足时的应对策略。文章详细解释了Android中的LMK(Low Memory Killer)机制,以及如何通过监控内存使用情况来回收Activity。
关键观点总结
关键观点1: 系统可用内存不足时,Android系统的LMK机制会根据进程的优先级来杀掉一部分进程,释放内存供后续启动的APP使用。
LMK机制基于Linux内核的OOM规则改进,通过两个文件(/sys/module/lowmemorykiller/parameters/minfree 和 /sys/module/lowmemorykiller/parameters/adj)来配置阈值和要杀掉的进程的优先级。
关键观点2: 应用可用内存不足时,如果应用使用内存接近堆的限制阈值并且尝试分配内存,很容易导致OOM。Android系统会在进程内存不足时,回收不可见的Task。
回收机制是在虚拟机GC时通过调用对象的finalize()方法来触发内存回收。当已用内存超过最大内存的3/4时,系统会开始回收不可见的Task,每次只回收一个Task。
关键观点3: 文章提供了关于Android进程优先级ADJ算法、LMK机制、内存监控机制等的详细解读,并进行了Demo验证。
文章还介绍了如何通过轮询当前可用内存来判断是否需要回收Activity,并给出了相关的参考文献和推荐网站。
文章预览
本文作者 作者: CoderPig 本文由作者授权发布,转载自公众号:「 抠腚男孩」 1 系统可用内存不足 LMK机制 Android系统中,进程的生命周期由系统控制,处于体验和性能考虑,在APP中点击Home键或Back回退操作,并不会真的杀掉APP,进程依旧存在于内存中,这样下次启动此APP时就能更加快速。随着系统运行时间增长,打开APP越来越多,内存中的进程随着增多,系统的可用内存会越来越少。咋办,总不能让用户自己去杀进程吧,所以系统内置一套回收机制,当系统可用内存达到一个阈值,系统会根据进程优先级来杀掉一部分进程,释放内存供后续启动APP使用。 Android的这套回收机制,是基于Linux内核的OOM规则改进而来的,叫Low Memory Killer,简称LMK。 阈值 & 杀谁 通过下述两个文件配合完成,不同手机数值可能不同,以我的老爷机魅蓝E2为例 (Android 11的Mix2S一
………………………………