JBOSS AS 5的JVM 6内存设置如何?
题
我正在使用运行在JBOSS上的ICEFaces应用程序,我目前的heapsize设置为
-Xms1024m– Xmx1024m -XX:MaxPermSize = 256m
你有什么建议调整JBOSS AS 5(5.0.1 GA)JVM 6的内存参数?
解决方案
根据文章:
对于 PermGen 。启动时,它经常抛出
OutOfMemoryException:PermGen Error
。
当您经常热部署应用程序时,在开发过程中这可能会特别烦人。在这种情况下,JBoss QA建议提高permgen大小,允许类卸载和permgen扫描:
-XX:PermSize=512m -XX:MaxPermSize=1024 -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled
但这更加明确,我并不是建议盲目地应用这种配置(正如人们在评论中写道的那样,“如果它没有被破坏,就不要修复它”)。
关于堆大小,请始终牢记:堆越大,主要GC 越长。现在,当你说“它肯定太小”时,我真的不知道这意味着什么(什么错误,症状等)。据我所知,一个1024米的堆实际上对于一个webapp来说非常重要,对于大多数人来说应该真的足够了。请注意GC的主要持续时间。
其他提示
堆:从512 MB开始,将上限设置为您认为应用永远不会获得的位置,而不是让服务器开始交换。
Permgen:一旦应用程序读取应用程序中使用的所有类,这通常足够稳定。如果您已经测试了应用程序并且它的工作频率为256 MB,那么请保留它。
@wds:由于以下两个原因,尽可能将堆最大值设置为绝对不是一个好主意:
- 大堆使得完整GC需要更长时间。如果启用了PermGen扫描,那么大的PermGen空间也需要更长的时间。
- Linux上的JBoss AS可以将未使用的I / O句柄打开足够长的时间以使Linux强行清理它们,阻止机器上的所有进程直到它完成(可能需要1分钟!)。如果您忘记关闭热部署扫描程序,则会更频繁地发生这种情况。 醇>
- 将-Xms减少到JBoss AS启动开始减速的程度
- 将-Xmx减少到更频繁发生完整GC的点,因此Linux I / O句柄清理已停止 醇>
这可能会在我的申请中每周发生一次,直到我:
对于开发人员,我认为增加PermGen是好的,但在生产中你可能只想使用必要的东西来避免长时间的GC暂停。
不隶属于 StackOverflow