我正在使用运行在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:由于以下两个原因,尽可能将堆最大值设置为绝对不是一个好主意:

  1. 大堆使得完整GC需要更长时间。如果启用了PermGen扫描,那么大的PermGen空间也需要更长的时间。
  2. Linux上的JBoss AS可以将未使用的I / O句柄打开足够长的时间以使Linux强行清理它们,阻止机器上的所有进程直到它完成(可能需要1分钟!)。如果您忘记关闭热部署扫描程序,则会更频繁地发生这种情况。
  3. 这可能会在我的申请中每周发生一次,直到我:

    1. 将-Xms减少到JBoss AS启动开始减速的程度
    2. 将-Xmx减少到更频繁发生完整GC的点,因此Linux I / O句柄清理已停止
    3. 对于开发人员,我认为增加PermGen是好的,但在生产中你可能只想使用必要的东西来避免长时间的GC暂停。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top