小编典典

如何模拟内存不足:请求的阵列大小超出VM限制

java

我使用了sun网站的“内存不足”帮助。引用为

内存不足:请求的阵列大小超出了VM限制

这表明应用程序试图分配一个大于堆大小的数组。例如,如果应用程序尝试分配512MB的数组,但最大堆大小为256MB,则将引发此错误。在大多数情况下,问题可能是堆大小太小,或者是错误导致应用程序尝试创建其大小计算错误地巨大的数组。

我试图通过模拟

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

public class JavaTest {
    public static void main(String[] args){
        long[] ll = new long[64*1024*1024];
    }
}

在我的机器上

javac *.java;java -Xmx256m JavaTest

但是上面的线正在产生

线程“主”中的异常java.lang.OutOfMemoryError:Java堆空间
    在JavaTest.main(JavaTest.java:7)

我想念什么?

更新: 我的java版本是

$ java-版本
Java版本“ 1.6.0_15”
Java(TM)SE运行时环境(内部版本1.6.0_15-b03)
Java HotSpot(TM)服务器VM(内部版本14.1-b02,混合模式)

阅读 217

收藏
2020-11-01

共1个答案

小编典典

为了我

long[] l = new long[Integer.MAX_VALUE];

产量 Exception in thread "main" java.lang.OutOfMemoryError: Requested array size exceeds VM limit

PS: 如果您需要出于测试目的而产生异常,则也可以只是您throw new OutOfMemoryError("Requested array size exceeds VM limit")自己。

2020-11-01