我有一个非常耗费内存的程序,并且考虑使用-Xmx2048m为java jvm分配更多的最大内存。 但是在启动时我得到了“无法为对象堆保留足够的空间”错误。
尝试多个值时,发现我的最大值是-Xmx1560m
并且它开始了。但我喜欢分配2GB。我有6GB的物理内存和Taskmanager在我用-Xmx1560m启动java进程后显示3400MB。
有谁知道为什么我不能分配2GB?
答案 0 :(得分:1)
32位窗口将程序限制在大约1.2 - 1.5 GB的连续内存。即使您具有64位操作系统,但是您正在为32位JVM模拟32位环境,此限制也适用。
避免此限制的方法是使用64位操作系统和64位JVM,并且根据您购买的Windows的风格,限制要高得多。专业版限制为192 GB。