码迷,mamicode.com
首页 > 编程语言 > 详细

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

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

标签:java   jvm   虚拟机   java heap space   outofmemoryerror   

    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堆溢出】

标签:java   jvm   虚拟机   java heap space   outofmemoryerror   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!