我在Eclipse中编写了一个Main类,其代码如下:
...
int []test = new int[Integer.MAX_VALUE];
...
文件包含以下内容:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
这需要多少堆大小?我使用以下方法增加了eclipse大小,但它仍然失败:
-Xms4g
-Xmx4g
答案 0 :(得分:7)
int
在Java中是32位。您需要超过8G的内存来存储该阵列(4 *(2 31 -1))。
答案 1 :(得分:2)
由于您要声明基本类型的向量(int),Java将尝试为向量的每个位置分配32位
你的矢量长度实际上是2147483647
做一些计算:
需要内存= 32位x 2147483647 = 68719476704位= 8589934588字节
所需内存= 8589934 KB
所需内存= 8589 MB
所需内存= 8.58 GB
因此,您需要大约8 GB来运行您的应用程序。