我必须使用索引范围为 0 到 33554432 的 long
数组。
它给出了一个错误:
"Exception in thread main java.lang.OutOfMemoryError: Java heap space".
而 short
数组不会给出此错误。我必须使用 long
数组和相同的索引,我该怎么办?
最佳答案
您可以通过使用整数文字访问数组这一事实得到提示。由于整数文字最多只能达到 Integer.MAX_VALUE
,这就是您的数组可以拥有的索引(和元素)数量。 arshajii brings up another hint .
您的问题只是因为您的应用程序没有足够的内存来创建那么多 long
但有足够的内存来创建那么多 short
.请记住,当数组被初始化时,它的元素也被初始化为默认值。对于原始类型,该值为 0
或 0.0
。需要考虑的事项(取决于您的环境)
Long[] array = new Long[33554432]; // allocation would work
long[] array = new long[33554432]; // allocation would fail
这是因为引用类型被初始化为null
引用,所以只有引用占用空间。所以你可以开始添加元素,但它最终也会失败。
使用更多内存启动您的应用程序。
关于java - Java 中的长数组可以支持多少个索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19189659/