0

Websphere 7 にデプロイされたアプリケーションでメモリ不足の問題が発生しています。

私は yourKit を使用して何が起こっているのかを解明しようとしていますが、興味深いことの 1 つは、アプリケーションを初めて起動すると、約 20k クラスがロードされ、別のデプロイを行うたびに (websphere を再起動せずに) ロードされることです。 ) この数値は 2k 増加し、ヒープ サイズはこの増加に従います。

これが根本的な問題だと思いますが、なぜこれが起こっているのか説明する方法がわかりません。

あるデプロイの前と別のデプロイの直後にすべてのクラスをリストしようとしましたが、20k クラスをすべてリストすることができなかったため (理由がわからないのは 10k だけです)、これはうまく機能しませんでした。そして、2 つのリストを比較すると、実際に私のアプリケーションまたはアプリケーションの依存関係にある約 600 の新しいクラスが見つかりました。

私のアプリケーション クラスのほとんどは Enum であり、DAO クラスの実装であることがわかりました。

私のアプリケーションは、Struts と Spring フレームワークを使用する Java EE 6 アプリケーションです。

何かご意見は?

4

2 に答える 2

0

これは、典型的なクラス ローダー リークです。これは、アプリケーションまたはランタイム (つまり、WebSphere または JRE) のバグが原因である可能性があります。特に古いフィックスパックでは、WAS 7 にそれらの多くがあることに注意してください。

問題についてさらに理解を深めるために、次のドキュメントを参照してください。

https://code.google.com/p/arit/wiki/GettingStarted

于 2013-05-27T20:15:50.747 に答える