为什么调用ensureCapacity(Integer.MAX_VALUE)会抛出OOME?

时间:2017-06-28 02:49:12

标签: collections

以下是一种情况: -

ArrayList<ArrayList<Object>> listOfLists = new ArrayList<ArrayList<Object>>();

listOfLists.ensureCapacity(Integer.MAX_VALUE);

下面是堆栈跟踪: -

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:3210)
    at java.util.Arrays.copyOf(Arrays.java:3181)
    at java.util.ArrayList.grow(ArrayList.java:261)
    at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:235)
    at java.util.ArrayList.ensureCapacity(ArrayList.java:218)
    at com.ankit.collections.OOMETest.main(OOMETest.java:10)

为什么jvm会把OOME扔到这里?我的内存大约是2 GB~2147483647字节

0 个答案:

没有答案
相关问题