6

数日間のデバッグの後、中規模から大規模の Web アプリケーションをリークなしで Tomcat 6.0.32 に正常に再デプロイすることができPermGenました。いっぱいになった後にドロップが見られPermGen、クラスローダーがガベージコレクションされました。

大喜びした後、Maven と Jetty プラグインで構成される開発環境で、アプリケーションをリークなく再デプロイできるようにしました。

残念ながら、以下のスクリーンショットに示すように、サーバーの制限に達したようです

あなたのキットのスナップショット http://img811.imageshack.us/img811/7320/jettyclassloaderbeanelr.png

Jetty リクエスト スレッドにはBeanElResolver、Web アプリケーションから複数のクラスへの強い参照がある への強い参照があります。

この情報をフラッシュする方法についての参照は見つかりませんでした。

PermGenこの最後のリークをアプリケーションから削除するにはどうすればよいですか?


アップデート:

問題を解決するために次のことを行いましたが、うまくいきませんでした。

  • Jetty プラグインの最新バージョン (7.4.5 と 8.0.0.M3 の両方) に更新されました。
  • CMSコレクターを使用しました:-XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled

更新 2:

4

2 に答える 2

2

これは、最新の Jetty バージョンで回避される EL 実装の実際のバグです。

バージョン 7.5.0 がリリースされると、修正が含まれます。

于 2011-07-29T08:32:50.967 に答える
0

あなたの質問に対する直接の答えではありませんが、開発でJRebelを使用することを検討するかもしれません。JRebelを使用すると、ほとんどの場合、再デプロイする必要がないため、permgenリークと再デプロイの無駄な時間の両方を回避できます。それは私にとって非常にうまく機能しています。

于 2011-07-25T16:05:11.710 に答える