为了账号安全,请及时绑定邮箱和手机立即绑定

Windows XP上的Java最大内存

Windows XP上的Java最大内存

温温酱 2019-07-03 15:47:27
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可以识别。
查看完整描述

3 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

这与连续记忆有关。

这是我在网上找到的一些信息以前有人问过,应该是“VM神”问的:

对于堆,我们需要一个连续的内存区域,因为我们有一堆从堆开始就被(缩放)偏移量索引的侧数据结构。例如,我们使用一个“卡片标记数组”跟踪对象引用更新,该数组为每512字节堆有一个字节。当我们在堆中存储引用时,我们必须在卡片标记数组中标记相应的字节。我们正确地移动存储的目标地址,并使用它来索引卡片标记数组。在C+中寻址你无法用Java完成的算术游戏(必须:-)。

通常情况下,我们不会遇到不太大的连续区域(Windohs上最多可达1.5GB,Solaris上可高达3.8GB)。(YMMV.)在Windohs上,问题主要是在JVM启动之前加载了一些库,从而破坏了地址空间。使用/3GB开关不会重新建立库的基础,因此对我们来说,它们仍然是一个问题。

我们知道如何制作块堆,但是使用它们会有一些开销。与32位JVM中更大的堆相比,我们对更快的存储管理有更多的请求。如果您真的想要大堆,请切换到64位JVM。我们仍然需要连续内存,但在64位地址空间中获得内存要容易得多。


查看完整回答
反对 回复 2019-07-03
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

Windows的Java堆大小限制是:

  • 极大值

    在32位Java上可能的堆大小:

    1.8 GB

  • 推荐

    32位Java上的堆大小限制:

    1.5GB

    (或

    1.8 GB

    使用/3GB选项)

这并不能帮助您获得更大的Java堆,但是现在您知道您不能超越这些值。


查看完整回答
反对 回复 2019-07-03
  • 3 回答
  • 0 关注
  • 419 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号