gpt4 book ai didi

java - 使用 256 MB RAM,我们可以创建的 double 组的最大长度是多少?

转载 作者:行者123 更新时间:2023-12-01 06:47:00 24 4
gpt4 key购买 nike

Code Ranch有这个问题:

28) If we have 256 MB RAM then what is the maximum length of double array we can create? (Ignore the jvm memory occupied and everything else)

Ans: Integer.MAX_VALUE as the length() method must return correct 'int' length.

我不确定我是否理解他们提供的答案。据我所知,大多数实现都使用 64 位 double ,这意味着我们可以在 256 MB RAM 中容纳大约 4 194 304 个 double (减去开销)。

那么在 256 MB RAM 环境中, double 组的最大长度怎么会是 2147483647 呢?

下面的测试代码肯定会给我们带来 OOM,对吧?:

public class test {
public static void main(String[] args) {
double[] d = new double[java.lang.Integer.MAX_VALUE - 8];
}
}

最佳答案

编辑:下面的答案假设问题是询问可以在问题中指定的 256MB 内分配的数组大小。如果这不是问题的重点,那么就没有明确的答案 - 因为最大长度完全取决于分配给 JVM 的内存量, JVM 如何使用内存等。我们可能有 256MB 内存,但使用 -Xmx64M 运行 Sun JVM,因此可用内存甚至少于 256MB。

因此,要么问题不好,要么答案错误 - 或者很可能两者兼而有之。

<小时/>

Code Ranch 的答案绝对不正确:256MB 是 28 * 220 字节 - 即 228 字节。每个 double 值占用 8 个字节,因此即使不考虑对象和长度的任何开销,在 256MB 中可以存储的 double 值的最大数量为 2 23。 Integer.MAX_VALUE 是 231 - 1,这显然要大得多。

(顺便说一句,这不是“大多数实现”使用 64 位用于 double 的问题 - 这是规范所要求的。)

所以,是的,如果您只有 256MB 可用内存,您的测试代码确实会给出 OOM。

鉴于该页面上的一些问题甚至没有答案,这个答案肯定是不正确的,并且其他答案写得很糟糕,我会完全忽略该页面。

关于java - 使用 256 MB RAM,我们可以创建的 double 组的最大长度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8624400/

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