Java Enterpriseアプリケーションのクラスローディングの問題
-
10-07-2019 - |
質問
GlassfishサーバーにEJB3とJSFを備えたエンタープライズアプリケーションがあります。このアプリケーションを2週間以上実行した後、クラスの読み込みに問題があることに気付きました。これはpermgenの問題ではないと思います。クラスは、ページを開くたびにロードされましたが、メモリから消去されることはありませんでした。サーバーのメモリのスナップショットは次のとおりです。
したがって、この問題をデバッグする方法についてのポインタが必要です。
他のヒント
アプリケーションをリロードしているようには見えませんが、これは明らかな答えです。本当にあなたはそれらのクラスが何であるかを知りたいです。
ReflectionとXSLT [C]はクラスを作成するための明らかなターゲットですが、これは信じられないほど規則的なようです。おそらく、何らかの方法でリークしている時間ベースのキャッシュがどこかにあると思われます。
JSF Webフレームワーク(MyFaces、ICEFacesなど)を使用している場合、これが問題になる可能性があります。特に、アプリケーションを再デプロイしていないという事実を考えますが、これはページを開いたり閉じたりするときに起こります。デバッグとプロファイリングをさらに行う前に、適切な課題トラッカーを確認することをお勧めします。
また、意図的に低いヒープスペースでローカルマシンにアプリケーションをデプロイし、アプリケーションのWebページをナビゲートするだけで、メモリリークを一貫して再現しようとすることができます。できれば、新しいクラスが読み込まれることになるアクションの種類を正確に理解できるようになります。
所属していません StackOverflow