`
生亦何欢
  • 浏览: 11493 次
社区版块
存档分类
最新评论

Java8的OutOfMemoryError如何产生

阅读更多
测试类
public class PerGenTest {
	
	
	public static void main(String[] args) {
	    ArrayList<TestClass> list = new ArrayList<TestClass>();
		String i = "";
		while(true){
			i = i + "a";
			TestClass test = new TestClass();
			test.setName(i);
			list.add(test);
		}	
		
	}
	
}


引用类
public class TestClass {
	private static String staticName = "";
	private long a;
	
	public void setName(String name){
	    a = 100l;
		staticName = name;
	}
}


设置JVM启动参数(较小的Heap,较大的Meta(PerGen)):
-Xms1m -Xmx1m -XX:MaxMetaspaceSize=5M -XX:+HeapDumpOnOutOfMemoryError


结果:
引用
java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid9948.hprof ...
Heap dump file created [1834150 bytes in 0.023 secs]
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:3210)
at java.util.Arrays.copyOf(Arrays.java:3181)
at java.util.ArrayList.grow(ArrayList.java:261)
at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:235)
at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:227)
at java.util.ArrayList.add(ArrayList.java:458)
at OutMemoryTest.PerGenTest.main(PerGenTest.java:15)


设置JVM启动参数(较大的Heap,较小的Meta(PerGen)):
-Xms1m -Xmx1m -XX:MaxMetaspaceSize=5M -XX:+HeapDumpOnOutOfMemoryError


java.lang.OutOfMemoryError: Metaspace
Dumping heap to java_pid12916.hprof ...
Error occurred during initialization of VM
GC triggered before VM initialization completed. Try increasing NewSize, current value 2048K.

分享到:
评论

相关推荐

    java.lang.OutOfMemoryError: Java heap space 解决方法

    "Java.lang.OutOfMemoryError: Java heap space 解决方法" Java.lang.OutOfMemoryError: Java heap space 是 Java 中的一个常见错误,它发生时,Java 虚拟机 (JVM) 无法分配对象,因为堆空间不足。下面是解决该问题...

    Myeclipse下java.lang.OutOfMemoryError Java heap space的解决

    ### Myeclipse下java.lang.OutOfMemoryError: Java heap space的解决方案 在使用Myeclipse进行Java开发时,可能会遇到`java.lang.OutOfMemoryError: Java heap space`这个错误提示。这种异常通常发生在应用程序占用...

    java.lang.OutOfMemoryError处理错误

    java.lang.OutOfMemoryError处理错误 java.lang.OutOfMemoryError是Java虚拟机(JVM)中的一种常见错误,发生这种错误时,JVM将无法继续运行,程序将崩溃。这种错误的出现通常是由于Jvm的内存不足或内存泄露导致的...

    java[1].lang.OutOfMemoryError_Java_heap_space错误及处理办法

    ### Java.lang.OutOfMemoryError:Java Heap Space 错误及处理办法 在Java应用程序开发与维护过程中,经常会遇到`java.lang.OutOfMemoryError: Java heap space`这一异常情况。该异常通常表明Java虚拟机(JVM)的堆...

    实例解决Java异常之OutOfMemoryError的问题

    Java 堆用于存储对象实例,只要不断创建对象,并且保证 GC Roots 到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么对象数量达到最大堆的容量限制之后就会产生内存溢出异常。可以通过虚拟机参数 -Xmx 和 -...

    解决OutOfMemoryError内存溢出

    在Java开发过程中,我们经常会遇到`java.lang.OutOfMemoryError`(简称OOM)的问题。这个问题的发生主要是由于JVM内存不足或程序中存在内存泄漏所引起的。本文将深入探讨OOM产生的原因以及如何有效地解决这一问题。 ...

    解决OutOfMemoryError: PermGen space

    在Java应用程序运行过程中,可能会遇到“OutOfMemoryError: PermGen space”的错误提示。这种错误通常发生在永久代(PermGen space)内存不足的情况下,永久代主要用于存储类的信息、常量、静态变量以及方法信息等。...

    OutOfMemoryError_8种典型案例分享.pdf

    在本篇文档中,将详细介绍java.lang.OutOfMemoryError的8种典型案例,并讨论它们的成因和解决方法。这些案例包括Java堆内存溢出、永久代空间溢出、元空间溢出、无法创建新的本地线程、交换空间不足、请求的数组大小...

    java抛java heap space

    在 Java 应用程序运行过程中,如果出现内存不足的情况,JVM(Java虚拟机)会抛出 `java.lang.OutOfMemoryError: Java heap space` 的异常。这种错误通常发生在应用程序对内存的需求超过了 JVM 能够提供的最大堆空间...

    java1.8.zip

    Java 1.8,也被称为Java 8,是Oracle公司发布的一个重要的Java开发工具包(JDK)版本,它在2014年正式推出,引入了许多创新特性,旨在提高开发人员的效率和应用程序的性能。针对“jdk1.8 产生cash,jvm奔溃的问题”...

    Java中内存异常StackOverflowError与OutOfMemoryError详解

    Java中内存异常StackOverflowError与OutOfMemoryError详解 Java中内存异常StackOverflowError与OutOfMemoryError是两种常见的错误类型,它们都是 Java 虚拟机(JVM)在运行时可能遇到的问题。本文将详细介绍这两种...

    java内存管理详细介绍.doc

    首先,Java的内存主要分为五个区域:程序计数器、Java虚拟机栈、本地方法栈、Java堆和方法区(在Java 8及以后的版本中,方法区被元空间取代)。每个区域都有其特定的用途和生命周期。 1. **程序计数器**:这是一个...

    JAVA内存调优白皮书(IBM)

    9. **内存溢出问题**:解释不同类型的内存溢出错误,如Heap OutOfMemoryError、PermGen Space OutOfMemoryError(Java 8以后为Metaspace OutOfMemoryError)的产生原因和解决方案。 10. **实战案例**:通过具体的...

    Java性能调优命令

    7. Java.lang.OutOfMemoryError是一种常见的Java应用程序运行时错误,它提示JVM没有足够的内存分配给请求。该错误可以细分为几个子类别,如OutOfSwapSpace、GCOverheadLimitExceeded、PermGenSpace等。 - ...

    Java\课件\JAVA的异常处理机制.ppt

    - **Error**:表示系统级错误或虚拟机错误,如`OutOfMemoryError`、`StackOverflowError`等,一般不应在应用程序中捕获或处理。 6. **异常类的子类**: - `RuntimeException`子类包括`ArithmeticException`(算术...

    java虚拟机介绍

    - **Apache Harmony**:这是一个开源项目,旨在提供一个与Java标准兼容的虚拟机和库,尽管该项目已经结束,但它对Java社区产生了深远的影响。 - **Microsoft JVM**:微软曾推出的一款Java虚拟机,但后来因为与Sun ...

    Java中常见异常类型及分析.pdf

    - 使用Java 8及以上版本中的Optional类来管理可为null的对象。 **示例代码改进版:** ```java String str = null; if (str != null) { System.out.println(str.length()); } else { System.out.println("String ...

    IBM Thread and Monitor Dump Analyzer for Java jca37

    IBM Thread and Monitor Dump Analyzer for Java,简称jca37,是一款专为Java开发者设计的强大工具,用于分析和解决Java应用程序中的性能问题,特别是内存溢出(OutOfMemoryError)和javacore文件的分析。...

    Java内存溢出

    解决方法包括增大MaxPermSize的值,减少第三方Jar包的使用,或者使用Java 8以上的版本,PermGen空间将被Metaspace代替。 2. java.lang.OutOfMemoryError: Java heap space Java堆空间溢出是最常见的情况之一,主要...

Global site tag (gtag.js) - Google Analytics