首页 > 编程语言 > 详细

JVM【第五回】:【OutOfMemoryError异常之Java堆溢出】

时间:2014-07-24 17:56:32      阅读:412      评论:0      收藏:0      [点我收藏+]

    Java堆用于存储对象实例,我们只要不断地创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清楚这些对象,就会在对象数量到达最大堆的容量限制后产生内存溢出异常。

    代码清单中限制Java堆的大小为20MB,不可扩展(将堆的最小值-Xms参数与最大值-Xmx参数设置为一样即可避免堆自动扩展),通过参数-XX:+HeapDumpOnOutOfMemoryError可以让虚拟机在出现内存溢出异常时Dump出当前的内存堆转储快照以便时候进行分析。

    

    在Eclipse中的Run Configurations页签中设置虚拟机参数如下图所示:

bubuko.com,布布扣

    

    代码如下: 

package oom;

import java.util.ArrayList;
import java.util.List;

/**
 * JAVA堆溢出
 * @author Madison
 * @date 2014-7-11
 * VM Args: -Xms20M -Xmx20M -XX:+HeapDumpOnOutOfMemoryError
 */
public class HeapOOM 
{
	static class OOMObject{}
	
	public static void main(String[] args) 
	{
		List<OOMObject> list = new ArrayList<HeapOOM.OOMObject>();
		while(true)
			list.add(new OOMObject());
	}
}

    运行结果:

    java.lang.OutOfMemoryError:Java Heap space

    Dumping Heap to java_pid3404.hprof...

    Heap dump file created[22045981 bytes in 0.663 secs]  

本文出自 “2377209” 博客,转载请与作者联系!

JVM【第五回】:【OutOfMemoryError异常之Java堆溢出】,布布扣,bubuko.com

JVM【第五回】:【OutOfMemoryError异常之Java堆溢出】

原文:http://2387209.blog.51cto.com/2377209/1529530

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!