我读过这个问题的一些答案(为什么我无法创建大尺寸的数组? https://stackoverflow.com/questions/31382531/why-i-cant-create-an-array-with-large-size and https://bugs.openjdk.java.net/browse/JDK-8029587 https://bugs.openjdk.java.net/browse/JDK-8029587)并且我不明白以下内容。“在 GC 代码中,我们以 int 的形式传递对象的大小。”据我所知,JVM 中一个字的大小是 4 个字节。据此,如果我们将大尺寸长数组的大小(例如,MAX_INT - 5)作为 int 以单词形式传递,则必须得到 OutOfMemoryException请求的数组大小超出 VM 限制因为即使没有标头大小,对于 int 来说,大小也太大了。那么为什么不同类型的数组对元素的最大数量有相同的限制呢?
仅解决为什么不同类型的数组对元素的最大数量有相同的限制? part:
因为在现实中这并不重要;但允许实现 JVM 的代码更加简单。
当只有one限制;对于所有类型的数组都是一样的;然后你可以用该代码处理所有数组。而不是拥有大量特定于类型的代码。
考虑到需要“大型”数组的人仍然可以创建它们;并且只有那些需要的人真的很大阵列受到影响;为什么要花那么大的力气?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)