我使用了sun网站的“内存不足”帮助。引用为
内存不足:请求的阵列大小超出了VM限制 这表明应用程序试图分配一个大于堆大小的数组。例如,如果应用程序尝试分配512MB的数组,但最大堆大小为256MB,则将引发此错误。在大多数情况下,问题可能是堆大小太小,或者是错误导致应用程序尝试创建其大小计算错误地巨大的数组。
内存不足:请求的阵列大小超出了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,混合模式)
为了我
long[] l = new long[Integer.MAX_VALUE];
产量 Exception in thread "main" java.lang.OutOfMemoryError: Requested array size exceeds VM limit
Exception in thread "main" java.lang.OutOfMemoryError: Requested array size exceeds VM limit
PS: 如果您需要出于测试目的而产生异常,则也可以只是您throw new OutOfMemoryError("Requested array size exceeds VM limit")自己。
throw new OutOfMemoryError("Requested array size exceeds VM limit")