试图获得最大的数组长度.我在网上发现最大数组长度实际上是最大整数值.
我在我的代码中使用了这段代码:
int[] array = new int[Integer.MAX_VALUE]; // 2^31-1 = 2147483647
Run Code Online (Sandbox Code Playgroud)
我得到这种错误:
Exception in thread "main" java.lang.OutOfMemoryError: Requested array size exceeds VM limit
at IntMaxValueArrayLength.main(IntMaxValueArrayLength.java:7)
Run Code Online (Sandbox Code Playgroud)
我也在互联网上发现2 ^ 31-1不能是最大值,我需要减去一些数字,我试图减去100000但仍然得到相同的错误.
java.lang.OutOfMemoryError:请求的数组大小超过VM限制
这意味着您正在创建一个无法容纳在内存中的数组.仅仅因为该语言允许您创建一个大的数组,并不意味着它总是适合内存.
可能的解决方案是
1)找出一种不要声明数组如此大的方法.我正在弄清楚为什么你需要这样的东西.查看列表,可以动态调整大小.
2)增加启动时为VM提供的内存量(堆的大小).在这个问题上进行了很好的讨论.
如果你告诉我们为什么你需要一个很大的数组,也许我们可以帮助你找到一种解决方法,使用不同的数据结构或算法.