OOM异常(Out Of Memory Error)是指程序在运行过程中因内存资源耗尽而无法继续执行时抛出的错误。当应用程序向操作系统申请内存时,若系统无法分配足够的物理内存或虚拟内存空间,便会触发此异常。
核心原因
内存泄漏
对象不再使用但未释放,导致内存持续占用。例如:// Java示例:内存泄漏场景 List<Object> leakList = new ArrayList<>(); while (true) { leakList.add(new Object()); // 对象持续累积 }数据规模过大
一次性加载超量数据(如大文件、巨型数组),超出可用内存上限: $$ \text{所需内存} > \text{JVM堆大小} $$资源未释放
数据库连接、文件流等未及时关闭,占用系统资源。
典型场景
Java虚拟机:抛出
java.lang.OutOfMemoryError,细分类型包括:Heap Space:堆内存不足Metaspace:元数据区溢出GC Overhead:垃圾回收效率过低
Android系统:
android.os.TransactionTooLargeException等衍生异常。
影响与危害
- 进程崩溃:应用程序强制终止
- 数据丢失:未保存的操作结果消失
- 系统不稳定:可能引发级联故障
解决方向
graph LR A[诊断] --> B[内存分析工具] A --> C[代码审查] B --> D[JVM参数调优] C --> E[修复泄漏点] D & E --> F[压力测试验证]提示:通过
-Xmx调整JVM堆大小仅缓解表面问题,根治需结合代码优化与资源管理。