JVM之OutOfMemoryError

本文详细解析了Java虚拟机中出现OutOfMemoryError的原因及处理方法。重点介绍了类加载机制,并以堆内存分配为例,阐述了OOM发生的全过程。同时,给出了分析OOM异常的一般步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OutOfMemoryError类加载:这个类在JVM启动的时候就已经被加载了,而不是在第一次使用时才被加载,可以通过java -verbose:class -version查看JVM是否加载了该类。

何时抛出OutOfMemoryError:先尝试内存分配,内存不足则GC,GC之后还是内存不足则抛出OOM。
  以堆内存分配为例:正确情况下对象创建需要分配的内存是来自于Heap的Eden区域里,当Eden内存不够用的时候,会触发一次YGC(某些情况下会尝试到Old里进行分配,比如说要分配的内存很大),YGC完成之后会再次尝试分配,如果仍不足以分配此时的内存,则会进行一次FGC(不过此时的soft reference不会被强制回收),将老生代也回收一下,接着再做一次分配,仍然不够分配那会做一次强制将soft reference也回收的full gc,如果还是不能分配,那这个时候就不得不抛出OutOfMemoryError了。

如何分析OutOfMemoryError异常:待补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值