通过虚拟内存与RAM可行的内存大小

问题描述 投票:2回答:1

我正在尝试实例化一个巨大的ArrayList

List<Integer> list = new ArrayList<Integer>(Integer.MAX_VALUE);  

在日食中运行它,我得到:

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的实际大小在这里重要吗?由于分页,进程无法访问无限的虚拟内存吗?

java operating-system hardware virtual-memory java-heap
1个回答
2
投票

我有点困惑,RAM的实际大小在这里重要吗?

© www.soinside.com 2019 - 2024. All rights reserved.