gpt4 book ai didi

java整数数组大小混淆

转载 作者:行者123 更新时间:2023-12-01 17:54:08 25 4
gpt4 key购买 nike

我有这个代码

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

正在工作

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

正在 throw

线程“main”中出现异常 java.lang.OutOfMemoryError:Java 堆空间
在内存.main(内存.java:123)

在 64 位 Windows 计算机 jdk 1.8 中使用以下命令运行此命令java -Xms1M -Xmx1M内存

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

最佳答案

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

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

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

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

关于java整数数组大小混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46820534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com