我正在尝试实例化一个巨大的ArrayList
List<Integer> list = new ArrayList<Integer>(Integer.MAX_VALUE);
在eclipse中运行它我得到:
java.lang.OutOfMemoryError: Requested array size exceeds VM limit
如果我做:
List<Integer> list = new ArrayList<Integer>(Integer.MAX_VALUE - 2);
我得到一个不同的错误:
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory failed; error='The paging file is too small for this operation to complete'
#
# there is insifficent memory for the Java Runtime Environment to continue.
我在 eclipse 的运行配置中使用以下设置启动程序:
-Xmx8G
那么这里的问题是什么?即使我增加-Xmx16G
它仍然会给出同样的错误
更新
我有点困惑,RAM的实际大小在这里重要吗?由于分页,进程不能访问无限的虚拟内存吗?