jvm_内存溢出_Java堆溢出
2015-03-11 19:37
344 查看
Java堆用于存放对象实例,我们只要不断的创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象,就会在对象数量到达最大堆的容量限制后产生内存溢出异常。
例:
我们手动限制Java堆的大小为20MB,不可扩展(将堆的最小值-Xms参数与最大值-Xmx参数均设置为20M)。设置方法:eclispe中window->preferences->Java->Installed JRE,点击右侧的Edit 按钮,在编辑界面中的“Default VM Arguments ”选项中,填入:-Xms20m -Xmx20m
运行结果:
Exception in thread “main” java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2245)
at java.util.Arrays.copyOf(Arrays.java:2219)
at java.util.ArrayList.grow(ArrayList.java:242)
at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:216)
at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:208)
at java.util.ArrayList.add(ArrayList.java:440)
at jvm.HeapOOM$OOMObject.main(HeapOOM.java:11)
例:
我们手动限制Java堆的大小为20MB,不可扩展(将堆的最小值-Xms参数与最大值-Xmx参数均设置为20M)。设置方法:eclispe中window->preferences->Java->Installed JRE,点击右侧的Edit 按钮,在编辑界面中的“Default VM Arguments ”选项中,填入:-Xms20m -Xmx20m
package jvm; import java.util.ArrayList; import java.util.List; /** * -Xms20m -Xmx20m * * @author Poison * */ 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()); } } } }
运行结果:
Exception in thread “main” java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2245)
at java.util.Arrays.copyOf(Arrays.java:2219)
at java.util.ArrayList.grow(ArrayList.java:242)
at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:216)
at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:208)
at java.util.ArrayList.add(ArrayList.java:440)
at jvm.HeapOOM$OOMObject.main(HeapOOM.java:11)
相关文章推荐
- Java之JVM调优案例分析与实战(2) - 集群间同步导致的内存溢出
- 在AIX上用IBM的JVM,内存溢出时默认地会产生javacore文件(关于cpu的)和heapdump文件(关于内存的)。手动产生堆栈文件的方法是使用kill -3
- Java JVM:内存溢出问题
- myEclipse开发内存溢出解决办法myEclipse调整jvm内存大小java.lang.OutOfMemoryError: PermGen space及其解决方法
- 【Java JVM】如何避免内存泄漏、溢出
- Java之JVM调优案例分析与实战(3) - 堆外内存导致的溢出错误
- jvm 内存溢出 在myeclipse中加大tomcat的jvm内存 java.lang.OutOfMemoryError: PermGen space
- jvm笔记1--Java内存区域与内存溢出
- Java JVM:内存溢出问题
- JVM:Java内存区域与内存溢出
- JVM 学习笔记1 JAVA内存区域与溢出异常
- jvm 内存溢出 在myeclipse中加大tomcat的jvm内存 java.lang.OutOfMemoryError: PermGen space
- jvm 内存溢出 在myeclipse中加大tomcat的jvm内存 java.lang.OutOfMemoryError: PermGen space
- JVM架构(013)_java什么情况会内存溢出
- jvm 内存溢出 在myeclipse中加大tomcat的jvm内存java.lang.OutOfMemoryError: Java heap space
- Java JVM(三):内存溢出问题
- JVM 内存溢出 java.lang.OutOfMemoryError: PermGen space myeclipse10
- 深入理解Java虚拟机笔记--JVM内存模型及溢出问题总结
- java 内存泄露和jvm内存溢出区别
- Java VisualVM分析JVM内存溢出