Skip to content
阅读进度

如何理解Java OOM 与 lmkd? ​

返回 Java 与并发 目录

标准回答 ​

Java OOM通常表示分配所需内存无法满足,可能受堆上限、对象规模或可用内存等影响,常会有异常栈。Native分配失败、地址空间不足或图形资源不足也可能以不同方式失败。

lmkd在系统内存压力下选择进程终止,以缓解压力;受进程重要性和系统策略影响,并不一定留下Java OOM栈。现代Android的lmkd会使用压力信号等信息,具体配置取决于版本和厂商。

排查“闪退”先确认是Java异常、Native崩溃还是系统终止,核对退出原因和系统日志。仅仅没有OOM就认为内存没问题是不成立的。

追问与回答 ​

PSS低为什么仍会被杀 ​

系统看的是全局压力和进程重要性等条件,单个进程的某次PSS不是唯一决策依据。

参考资料 ​

内容来源 ​

用完整回答理解机制,用真实证据解释项目。