Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个非常消耗内存的程序,并考虑使用 -Xmx2048m 为 java jvm 分配更多的最大内存。但是在开始时我得到一个“无法为对象堆保留足够的空间”错误。
当尝试了几个值,发现我最大的价值是-Xmx1560m它开始了。但我喜欢分配 2GB。在我使用 -Xmx1560m 启动 java 进程后,我有 6GB 物理内存,Taskmanager 显示 3400MB 可用。
-Xmx1560m
有谁知道为什么我不能分配 2GB ?
32 位 Windows 将程序限制为大约 1.2 - 1.5 GB 的连续内存。即使您有 64 位操作系统但您正在为 32 位 JVM 模拟 32 位环境,此限制也适用。
避免此限制的方法是使用 64 位操作系统和 64 位 JVM,根据您购买的 Windows 的风格,限制要高得多。专业版限制为 192 GB。