测试类
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 中的一个常见错误,它发生时,Java 虚拟机 (JVM) 无法分配对象,因为堆空间不足。下面是解决该问题...
### Myeclipse下java.lang.OutOfMemoryError: Java heap space的解决方案 在使用Myeclipse进行Java开发时,可能会遇到`java.lang.OutOfMemoryError: Java heap space`这个错误提示。这种异常通常发生在应用程序占用...
java.lang.OutOfMemoryError处理错误 java.lang.OutOfMemoryError是Java虚拟机(JVM)中的一种常见错误,发生这种错误时,JVM将无法继续运行,程序将崩溃。这种错误的出现通常是由于Jvm的内存不足或内存泄露导致的...
### Java.lang.OutOfMemoryError:Java Heap Space 错误及处理办法 在Java应用程序开发与维护过程中,经常会遇到`java.lang.OutOfMemoryError: Java heap space`这一异常情况。该异常通常表明Java虚拟机(JVM)的堆...
Java 堆用于存储对象实例,只要不断创建对象,并且保证 GC Roots 到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么对象数量达到最大堆的容量限制之后就会产生内存溢出异常。可以通过虚拟机参数 -Xmx 和 -...
在Java开发过程中,我们经常会遇到`java.lang.OutOfMemoryError`(简称OOM)的问题。这个问题的发生主要是由于JVM内存不足或程序中存在内存泄漏所引起的。本文将深入探讨OOM产生的原因以及如何有效地解决这一问题。 ...
在Java应用程序运行过程中,可能会遇到“OutOfMemoryError: PermGen space”的错误提示。这种错误通常发生在永久代(PermGen space)内存不足的情况下,永久代主要用于存储类的信息、常量、静态变量以及方法信息等。...
在本篇文档中,将详细介绍java.lang.OutOfMemoryError的8种典型案例,并讨论它们的成因和解决方法。这些案例包括Java堆内存溢出、永久代空间溢出、元空间溢出、无法创建新的本地线程、交换空间不足、请求的数组大小...
在 Java 应用程序运行过程中,如果出现内存不足的情况,JVM(Java虚拟机)会抛出 `java.lang.OutOfMemoryError: Java heap space` 的异常。这种错误通常发生在应用程序对内存的需求超过了 JVM 能够提供的最大堆空间...
Java 1.8,也被称为Java 8,是Oracle公司发布的一个重要的Java开发工具包(JDK)版本,它在2014年正式推出,引入了许多创新特性,旨在提高开发人员的效率和应用程序的性能。针对“jdk1.8 产生cash,jvm奔溃的问题”...
Java中内存异常StackOverflowError与OutOfMemoryError详解 Java中内存异常StackOverflowError与OutOfMemoryError是两种常见的错误类型,它们都是 Java 虚拟机(JVM)在运行时可能遇到的问题。本文将详细介绍这两种...
首先,Java的内存主要分为五个区域:程序计数器、Java虚拟机栈、本地方法栈、Java堆和方法区(在Java 8及以后的版本中,方法区被元空间取代)。每个区域都有其特定的用途和生命周期。 1. **程序计数器**:这是一个...
9. **内存溢出问题**:解释不同类型的内存溢出错误,如Heap OutOfMemoryError、PermGen Space OutOfMemoryError(Java 8以后为Metaspace OutOfMemoryError)的产生原因和解决方案。 10. **实战案例**:通过具体的...
7. Java.lang.OutOfMemoryError是一种常见的Java应用程序运行时错误,它提示JVM没有足够的内存分配给请求。该错误可以细分为几个子类别,如OutOfSwapSpace、GCOverheadLimitExceeded、PermGenSpace等。 - ...
- **Error**:表示系统级错误或虚拟机错误,如`OutOfMemoryError`、`StackOverflowError`等,一般不应在应用程序中捕获或处理。 6. **异常类的子类**: - `RuntimeException`子类包括`ArithmeticException`(算术...
- **Apache Harmony**:这是一个开源项目,旨在提供一个与Java标准兼容的虚拟机和库,尽管该项目已经结束,但它对Java社区产生了深远的影响。 - **Microsoft JVM**:微软曾推出的一款Java虚拟机,但后来因为与Sun ...
- 使用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,是一款专为Java开发者设计的强大工具,用于分析和解决Java应用程序中的性能问题,特别是内存溢出(OutOfMemoryError)和javacore文件的分析。...
解决方法包括增大MaxPermSize的值,减少第三方Jar包的使用,或者使用Java 8以上的版本,PermGen空间将被Metaspace代替。 2. java.lang.OutOfMemoryError: Java heap space Java堆空间溢出是最常见的情况之一,主要...