java整数数组大小混乱

时间:2017-10-18 23:07:59

标签: java arrays memory-management

我有这段代码

int[] i = new int[127*1024];

正在运作

int[] i = new int[128*1024];

投掷

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at memory.main(memory.java:123)

在64位Windows机器jdk 1.8中使用以下命令运行此命令 java -Xms1M -Xmx1M memory

根据我的理解,java int是4个字节(32位),int []数组是一个对象。 在上面的情况下,如果大小为131.072字节(128 * 1024),堆空间为1mb,则失败 任何人都可以帮忙解释为什么它的内存不足吗?

1 个答案:

答案 0 :(得分:4)

在阵列创建时分配数组的每个元素的空间 所有元素都初始化为0

int值为4个字节,因此该数组会导致128 * 1024 * 4个字节被分配,即0.5 Mb。

你的数组不是该代码行堆上唯一的对象,这就是你的JVM爆炸的原因,即使你给了它1 Mb的内存。

您需要为JVM提供更多内存以避免此错误。