使用Jetty 7重新部署时解决PermGen问题

时间:2011-07-25 14:59:09

标签: java maven jetty el permgen

经过几天的调试后,我成功地在Tomcat 6.0.32上成功重新部署了中型到大型Web应用程序,没有任何PermGen泄漏。我看到填充后PermGen掉落,并且类加载器被垃圾收集。

经过多次欢欣之后,我试图在我们的开发环境中重新部署应用程序而不会泄漏,该开发环境由Maven和Jetty插件组成。

不幸的是,我似乎遇到了服务器限制,如下面的屏幕截图所示

Yourkit snapshot http://img811.imageshack.us/img811/7320/jettyclassloaderbeanelr.png

Jetty请求线程强烈引用BeanElResolver,而PermGen依次对我的webapp中的多个类进行强引用。

我没有找到关于如何刷新此信息的参考。

如何从我的应用程序中删除此最终-XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled泄漏?


更新:

我已经完成了以下操作来解决问题,但没有运气:

  • 更新到最新版本的Jetty插件(7.4.5和8.0.0.M3)
  • 使用了CMS收集器:{{1}}

更新2:

2 个答案:

答案 0 :(得分:2)

这是EL实现中的一个实际错误,它在最新的Jetty版本中得到了解决。

版本7.5.0一旦发布,将包含修复程序。

答案 1 :(得分:0)

不能直接回答您的问题,但您可以考虑在开发中使用JRebel。使用JRebel,您大多数时间没有进行重新部署,从而避免了permgen泄漏和重新部署的浪费时间。它对我来说非常好。