Skip to content
阅读进度

内存泄漏 线程泄漏 OOM 和 GC Root 是什么? ​

返回 性能与稳定性 目录

标准回答 ​

内存泄漏是已经不再需要的对象仍被可达引用保留;线程泄漏是应结束的线程或任务持续存在;OOM 是内存分配失败,可能由泄漏、峰值过高、大对象或其他资源压力导致。GC Root 是垃圾回收可达性分析的起点,例如线程栈引用、静态引用所关联的根和 JNI 引用等。(Java 内存分析)

机制解释 ​

线程泄漏会占用栈、调度和其他资源,也可能通过 Runnable 留住 Activity,进而形成内存泄漏,但两者不是同一概念。排查时复现进入退出循环,观察对象数量与内存曲线,用 heap dump 找到从根到泄漏对象的引用链。

延伸追问 ​

缓存也属于泄漏吗?有边界、有淘汰策略的缓存是主动保留;长期无界增长或错误保留页面会变成问题。Bitmap 要按显示尺寸采样与合理缓存,不要寄希望于频繁调用 System.gc 来解决设计问题。

内容来源 ​

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