【问题标题】:java 1.6 32-bit min and max heap memory issuejava 1.6 32位最小和最大堆内存问题
【发布时间】:2013-08-20 21:44:51
【问题描述】:

我安装了 32 位的 JRE v1.6。当我尝试按如下方式运行程序时:

java -Xms1024m -Xmx2048m net.analysis.MyProg

我看到显示以下消息:

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

据我所知,32 位 JVM 允许的最大堆为 2 GB。在运行我的代码的计算机上有 131061 MB 的物理内存(使用 Window 的任务管理器,128 GB 的 RAM)。

有人知道我在这里做错了什么吗?

【问题讨论】:

  • AFAIK - 堆空间需要是连续的。即使他们你可能有足够的空闲内存,它也被碎片化了......
  • 您使用的是什么版本的 Windows。在许多 32 位 Windows 上,限制为 3GB
  • WTF 128GB 内存 - 羡慕
  • 运行代码的服务器是 Windows Server 2008 R2 Enterprise 64 位。其他感兴趣的规格:Intel Xeon CPU X7560 @ 2.27GHz(4 个处理器,但任务管理器显示 16x4=32 个内核)。
  • 如果您运行的是 32 位 Windows 应用程序,您将受限于 Windows XP 仿真功能。不管你有多少内存,32 位 Windows 将你限制为 1.2 - 1.4 GB 的堆。你真的应该使用 64 位 JVM。

标签: java memory-management jvm jvm-arguments


【解决方案1】:

在您的情况下,限制很可能是 32 位架构和 Windows 分配虚拟地址空间的方式。

根据Oracle JVM FAQ,您只能期望在 Windows 上的 32 位 JVM 上获得 1.4Gb 到 1.6Gb。

【讨论】:

  • 我认为你是对的。我尝试了以下方法: java -Xms1g -Xmx1536m net.analysis.MyProg 并且有效。所以大约 1.5Gb 是极限。非常感谢。
猜你喜欢
  • 2011-01-28
  • 1970-01-01
  • 2019-08-18
  • 2012-10-06
  • 2013-02-12
  • 1970-01-01
  • 2011-05-20
  • 2013-12-06
  • 1970-01-01
相关资源
最近更新 更多