Skip to content
阅读进度

内存泄漏 GC 和低内存杀进程怎样区分? ​

返回 性能与稳定性 目录

标准回答 ​

内存泄漏是本该释放的对象仍被引用,常见原因包括静态持有 Activity、未注销监听和延迟任务引用。GC 是运行时回收可达性已消失对象的过程,频繁分配也可能触发更多 GC 和部分暂停,但不是每次 GC 都表示泄漏。lmkd 等系统机制则可能在内存压力下选择终止进程。我会分别分析 heap dump 的引用路径、分配与 GC 时间线、dumpsys meminfo 的 Java 与 Native 内存,以及系统低内存相关记录,避免只看 Java heap 就忽略图形或 Native 占用。

延伸追问 ​

Handler 泄漏要追到仍排队的消息或持久对象如何持有 Activity,不能简单说所有非静态 Handler 必然泄漏。

内容来源 ​

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