gpt4 book ai didi

Windows XP 上的 Java 最大内存

转载 作者:行者123 更新时间:2023-11-29 09:04:41 25 4
gpt4 key购买 nike

我总是能够为在 32 位 Windows XP(Java 1.4、1.5 和 1.6)上运行的 Java SE 分配 1400 兆字节。

java -Xmx1400m ...

今天,我在使用 Java 1.5_16 和 1.6.0_07 的新 Windows XP 机器上尝试了相同的选项并得到了错误:

Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

通过反复试验,似乎 1200 兆字节是我可以在这台机器上分配的最大容量。

知道为什么一台机器允许 1400 而另一台机器只允许 1200 吗?

编辑:机器有 4GB 的 RAM,其中大约 3.5GB 是 Windows 可以识别的。

最佳答案

请记住,Windows 具有虚拟内存管理,而 JVM 只需要在其地址空间 中连续的内存。因此,系统上运行的其他程序不一定会影响您的堆大小。会妨碍您的是加载到您的地址空间中的 DLL。不幸的是,Windows 中的优化在链接期间最大限度地减少了 DLL 的重定位,这使您更有可能拥有碎片化的地址空间。除了通常的东西之外,可能会侵入您的地址空间的东西包括安全软件、CBT 软件、 spy 软件和其他形式的恶意软件。差异的可能原因是不同的安全补丁、C 运行时版本等。设备驱动程序和其他内核位有自己的地址空间(4GB 32 位空间中的另外 2GB)。

可以尝试在您的 JVM 进程中检查您的 DLL 绑定(bind),并尝试将您的 DLL rebase 到一个更紧凑的地址空间。不好玩,但如果你绝望的话......

或者,您可以切换到 64 位 Windows 和 64 位 JVM。尽管其他人提出了建议,但它会消耗更多 RAM,您将拥有更多更多的连续虚拟地址空间,连续分配 2GB 将是微不足道的。

关于Windows XP 上的 Java 最大内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15657874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com