繁体   English   中英

java.lang.OutOfMemoryError - new int [Integer.MAX_VALUE];

[英]java.lang.OutOfMemoryError - new int[Integer.MAX_VALUE];

我在Eclipse中编写了一个Main类,其代码如下:

...
int []test = new int[Integer.MAX_VALUE];
...

它具有以下文件:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

这需要多少堆大小? 我使用以下方法增加了eclipse大小但仍然失败:

-Xms4g
-Xmx4g

int在Java中是32位。 您需要超过8G的内存来存储该阵列(4 *(2 31 -1))。

  1. 因为你声明了一个原始类型的向量(int),Java将尝试为你的向量的每个位置分配32位

  2. 你向量的长度实际上是2147483647

  3. 所以做一些计算:

需要的内存= 32位x 2147483647 = 68719476704位= 8589934588字节

需要的内存= 8589934 KB

需要的内存= 8589 MB

需要的内存= 8.58 GB

因此,您需要大约8 GB才能运行您的应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM