Windows XP上的Java最大内存

Windows XP上的Java最大内存

我一直能够为运行在32位WindowsXP上的JavaSE分配1400兆字节(Java1.4、1.5和1.6)。

java -Xmx1400m ...

今天,我在一台使用Java1.5_16和1.6.0_07的新Windows XP计算机上尝试了相同的选项,得到了错误:

Error occurred during initialization of VMCould not reserve enough space for object heapCould not create the Java virtual machine.

通过试验和错误,看来1200兆字节是我在这台机器上所能分配到的最多的。

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

编辑:这台机器有4GB的RAM和大约3.5GB的Windows可以识别。


温温酱
浏览 420回答 3
3回答

互换的青春

这与连续记忆有关。这是我在网上找到的一些信息以前有人问过,应该是“VM神”问的:对于堆,我们需要一个连续的内存区域,因为我们有一堆从堆开始就被(缩放)偏移量索引的侧数据结构。例如,我们使用一个“卡片标记数组”跟踪对象引用更新,该数组为每512字节堆有一个字节。当我们在堆中存储引用时,我们必须在卡片标记数组中标记相应的字节。我们正确地移动存储的目标地址,并使用它来索引卡片标记数组。在C+中寻址你无法用Java完成的算术游戏(必须:-)。通常情况下,我们不会遇到不太大的连续区域(Windohs上最多可达1.5GB,Solaris上可高达3.8GB)。(YMMV.)在Windohs上,问题主要是在JVM启动之前加载了一些库,从而破坏了地址空间。使用/3GB开关不会重新建立库的基础,因此对我们来说,它们仍然是一个问题。我们知道如何制作块堆,但是使用它们会有一些开销。与32位JVM中更大的堆相比,我们对更快的存储管理有更多的请求。如果您真的想要大堆,请切换到64位JVM。我们仍然需要连续内存,但在64位地址空间中获得内存要容易得多。

慕田峪7331174

Windows的Java堆大小限制是:极大值在32位Java上可能的堆大小:1.8 GB推荐32位Java上的堆大小限制:1.5GB(或1.8 GB使用/3GB选项)这并不能帮助您获得更大的Java堆,但是现在您知道您不能超越这些值。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java