java堆空间是由RAM还是硬盘决定的?

Bit*_*tes 7 java memory

我正在执行一个巨大的计算,我得到一个"堆外空间"错误.我想知道的是,如果Java自动进行分页,那么在执行此计算时可能会使用我的硬盘空间吗?如果它不自动执行,我该如何启用此选项?

Mat*_*all 12

Java堆存在于RAM中(忽略虚拟内存:).您可以分别使用-Xms-XmxVM args更改默认初始堆大小和最大堆大小.

通过使用-Xms和-Xmx开关分别指定初始和最大大小,可以覆盖旧一代的默认堆大小:

java -Xms <initial size> -Xmx <maximum size> program
Run Code Online (Sandbox Code Playgroud)

例如:

java -Xms128m -Xmx512m application
Run Code Online (Sandbox Code Playgroud)

你的机器有多少内存?您认为需要更多堆的计算是什么?

  • BTW标准选项`-mx`和`-ms`取代了Java 6中的`-Xmx`和`-Xms`. (4认同)

Jon*_*eet 2

堆的大小可以由 JVM 任意决定。对于大多数人来说,它是通过 -Xmx 命令行参数实现的,具有不同的默认值。您可能想要类似的东西:

java -Xmx2048M foo.bar.MyProgram
Run Code Online (Sandbox Code Playgroud)