外观
如何理解Java OOM 与 lmkd?
标准回答
Java OOM通常表示分配所需内存无法满足,可能受堆上限、对象规模或可用内存等影响,常会有异常栈。Native分配失败、地址空间不足或图形资源不足也可能以不同方式失败。
lmkd在系统内存压力下选择进程终止,以缓解压力;受进程重要性和系统策略影响,并不一定留下Java OOM栈。现代Android的lmkd会使用压力信号等信息,具体配置取决于版本和厂商。
排查“闪退”先确认是Java异常、Native崩溃还是系统终止,核对退出原因和系统日志。仅仅没有OOM就认为内存没问题是不成立的。
追问与回答
PSS低为什么仍会被杀
系统看的是全局压力和进程重要性等条件,单个进程的某次PSS不是唯一决策依据。
参考资料
内容来源
- Android 与 AI 工程 Wiki · 原条目
q058