Android 17 内存公平机制详解
你是否遇到过,手机还没用几年,多打开几个App手机就出现发热,卡顿的现象?去手机店,标配的手机运行内存12G已成为标配。这主要是因为Android系统的内存管理机制,为了保证前台应用的优先使用权,后台应用没节制的吞噬运行内存。当某个前台应用因内存泄露或粗暴劣化导致RAM占用无限膨胀是,传统的LMK机制为了保住前台,不得不按优先级Kill运行良好的后台缓存进程。
为了解决这一痛点,Android 17将引入新的应用内存硬件管理机制,直接给每个App套上“紧箍咒”,打破过去按整体内存紧张度杀后台的逻辑,转向更具有确定性、更公平的单应用的限制时代。
安卓17不再采用一刀切的固定内存上限,反而转向更具设备的物理内存总量,为每个App动态设定明确的内存使用上限。一旦某个应用行为异常,突破了系统为其量身定制的内存红线,内存管理机制将会直接的终止该进程。对于开发者来说,值得注意的是,这种查杀是由系统强制执行的,不会留下常规的崩溃堆栈信息。不过Android17在ProfilingManager中引入了TRIGGER_TYPE_OOM 和 TRIGGER_TYPE_ANOMALY 等新触发器。在应用因内存异常被杀前,系统会尝试抓取一份 Heap Dump(堆快照),并在应用下次冷启动时通过回调提供给开发者,用以排查定位。
在国产主流手机品牌的适配文档中,这一机制被进一步细化:预警-备份-查杀。当应用内存持续增长,达到或接近临界点,系统会向应用发送查杀或者预警广播。App收到广播后,应用需要立即执行数据备份,例如清理图片缓存或者其他。留给App应用一定的“反省”时间后,若内存依然超标,系统则会彻底终止进程并通过前台UI显示的提示用户。
这一机制对我们普通的用户来说有什么好处?
安卓17的内存公平机制,可以用四个字来概括:“稳、快、省、爽”。
以后可能不会因为哪个App优先级高,而被迫清理其他老老实实的App。而是哪个App一旦越界,系统会进行精准的清理或强制为其释放内存。从根本上遏制了内存暴涨,减轻了用户购机的负担。