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

无法使用内存设置-Xmx768M启动JBoss 5,jboss,jboss5.x,Jboss,Jboss5.x,我们有一台装有2048 RAM的Windows电脑。 我们尝试为JBoss使用下一个内存设置: -Xms256M-Xmx768M-XX:MaxPermSize=256M 但它无法启动: 初始化过程中发生错误 的虚拟机无法保留足够的空间 for对象堆无法创建 Java虚拟机 只有将-Xmx768M更改为-Xmx512M时,JBoss才会启动 有什么问题吗 更新: 现在我们使用下一个设置 -Xms512M-Xmx768M-XX:MaxPermSize=156M有趣。将最大内存设置为513M时会发生什

我们有一台装有2048 RAM的Windows电脑。
我们尝试为JBoss使用下一个内存设置:
-Xms256M-Xmx768M-XX:MaxPermSize=256M

但它无法启动:

初始化过程中发生错误 的虚拟机无法保留足够的空间 for对象堆无法创建 Java虚拟机

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

有什么问题吗

更新: 现在我们使用下一个设置

-Xms512M-Xmx768M-XX:MaxPermSize=156M有趣。将最大内存设置为513M时会发生什么情况

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

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

我很难相信今天的世界会是这样,但这可能值得一看

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


显示您的设置后,您只需将1G用于permgen和heap。尝试调整这些,直到它起作用,然后发布您拥有的数字。

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

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

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

我很难相信今天的世界会是这样,但这可能值得一看

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


显示您的设置后,您只需将1G用于permgen和heap。试着调整这些,直到它起作用,然后发布你的数据。

有两个可能的原因:

  • JVM在地址空间或中找不到768 MiB连续区域
  • RAM和分页文件上可用区域的总大小小于1 GiB
(由于GC实现,JVM在启动时使用
-Xmx
-XX:MaxPermSize
检查它们)

正如您可以
-Xmx768m-XX:MaxPermSize156m
,后者值得怀疑


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

可能有两种原因:

  • JVM在地址空间或中找不到768 MiB连续区域
  • RAM和分页文件上可用区域的总大小小于1 GiB
(由于GC实现,JVM在启动时使用
-Xmx
-XX:MaxPermSize
检查它们)

正如您可以
-Xmx768m-XX:MaxPermSize156m
,后者值得怀疑


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

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

也许您可以重新启动电脑,然后再试一次。您分配的内存不能超过您的总物理内存。

-Xms256M-Xmx768M-XX:MaxPermSize=256M
在初始化时最多只能获取512M,JVM进程本身大约需要100M。机器上有那么多空闲内存吗?我们总是在4G机器上运行jboss,因为DB占用了相当多的空间

这里有一个技巧,你可以使用它来找到你可以设置的最大数量。你可以直接跑

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

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


顺便说一句,在4G 32位windows机箱上,我们通常设置-Xms768M-Xmx1300M-XX:MaxPermSize=256M

-Xms256M-Xmx768M-XX:MaxPermSize=256M
在初始化时最多只能获取512M,JVM进程本身大约100M。机器上有那么多空闲内存吗?我们总是在4G机器上运行jboss,因为DB占用了相当多的空间

这里有一个技巧,你可以使用它来找到你可以设置的最大数量。你可以直接跑

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

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

顺便说一句,在4G 32位windows机箱上,我们通常设置-Xms768M-Xmx1300M-XX:MaxPermSize=256M

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


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

我们将分页文件的大小设置为4096M.BTW,这不是过载的PC。我们仅将其用于JBoss。抱歉,我的猜测可能是错误的。正如paxdiablo所说,这一定是地址空间的问题。根据Sun的FAQ,(通常)我们可以在Windows上的32位JDK中使用高达1.4 GiB的heap+perm。您的PC可能有一些东西(例如地址空间中部的DLL)导致地址碎片,这样您就可以分配少于1个GIB。(c.f.)我们将分页文件的大小设置为409