深入理解java虚拟机--OutOfMemoryError

1、堆溢出

Java堆用于存储实例对象,只要不断创建对象,并且保证GC Roots到对象之间有引用的可达,避免垃圾收集器回收实例对象,就会在对象数量达到堆最大容量时产生OutOfMemoryError异常。

举例:

说明(虚拟机参数堆的最小值-Xms与最大值-Xmx相同是为了避免堆动态扩展,-XX:+HeapDumpOnOutOfMemoryError可以让java虚拟机在出现内存溢出异常时时产生当前堆内存快照以便进行异常分析。

/*
 * VM Args: -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError
*/
public class HeapOOM {
static class OOMObejct{}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
List<OOMObejct> list = new ArrayList<OOMObejct> ();
while(true){
list.add(new OOMObejct());
}
}
}

运行结果:

java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid7640.hprof ...
Heap dump file created [22063830 bytes in 0.320 secs]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值