我们有带有2048 RAM的Windows的PC
我们尝试使用JBoss的下一个内存设置:
-Xms256M -Xmx768M -XX:MaxPermSize = 256M
但它无法启动:
初始化期间发生错误 VM无法保留足够的空间 对象堆无法创建 Java虚拟机。
只有当我们将-Xmx768M更改为-Xmx512M时,JBoss才会启动。
可能是什么问题?
更新
现在我们使用下一个设置
-Xms512M -Xmx768M -XX:MaxPermSize = 156M
答案 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)
有两种可能的原因:
(由于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