无法使用内存设置-Xmx768M启动JBoss 5

时间:2009-12-22 11:14:42

标签: jboss jboss5.x

我们有带有2048 RAM的Windows的PC 我们尝试使用JBoss的下一个内存设置:
-Xms256M -Xmx768M -XX:MaxPermSize = 256M

但它无法启动:

  

初始化期间发生错误   VM无法保留足够的空间   对象堆无法创建   Java虚拟机。

只有当我们将-Xmx768M更改为-Xmx512M时,JBoss才会启动。

可能是什么问题?

更新 现在我们使用下一个设置
-Xms512M -Xmx768M -XX:MaxPermSize = 156M

5 个答案:

答案 0 :(得分:4)

http://javahowto.blogspot.in/2006/06/6-common-errors-in-setting-java-heap.html

错误似乎是说机器的虚拟内存大小小于我们通过“-Xms1303m -Xmx1303m”定义的最大堆大小。我已将其更改为“-Xms256m -Xmx512m”,它开始在我的本地Windows框中工作。

答案 1 :(得分:0)

有趣。将最大内存设置为513M时会发生什么?

如果失败了,这可能是我很久没见过的问题。我使用的一个古老的COBOL编译器拒绝在具有640K RAM的PC上工作,因为他们使用签名号检查来确定是否有足够的内存。

在那个世界中,640K实际上设置了高位,因此是负数,所以检查总是失败。

我发现很难相信在今天的世界会出现这种情况,但可能值得一看。

如果 在513M没有失败,那么可能只是你正试图分配太多内存。重要的不一定是物理内存,地址空间可能是问题,但在32位Windows中你也应该有2G(至少)。

显示您的设置后,您只需为permgen和堆使用1G。尝试调整它们直到它起作用并发布你拥有的数字。

答案 2 :(得分:0)

有两种可能的原因:

  • JVM在地址空间中找不到768 MiB连续区域或
  • RAM和页面文件上的空闲区域总大小小于1 GiB。

(由于GC的实现,JVM在启动时使用-Xmx-XX:MaxPermSize检查它们)

正如你所能-Xmx768m -XX:MaxPermSize156m,后者是值得怀疑的。

如果是这样,可以通过释放RAM(例如,停止未使用的服务)或扩展分页文件来解决问题。

答案 3 :(得分:0)

也许您可以重新启动电脑并重试。你不能分配超过总物理内存的内存。

答案 4 :(得分:0)

-Xms256M -Xmx768M -XX:MaxPermSize=256M应该只尝试在初始化时最多获取512M加上JVM进程本身大约100M。你在机器上有那么多的空闲记忆吗?我们总是在装有4G的机器上运行jboss,因为DB也占用了很多。

这是一个可以用来找到你可以设置的最大金额的技巧。你可以简单地运行

java -version -Xms256M -Xmx768M -XX:MaxPermSize=256M

然后增加/减少值,直到找到JVM允许你设置的最大值。

BTW,在4G 32位窗口框中,我们通常设置-Xms768M -Xmx1300M -XX:MaxPermSize = 256M