2017-07-18 17 views
0

私のWindows 7 PCにインストールされているWAS 8.5.5.5に正常に動作するEARアプリケーションがあります。新しいバージョンのアプリをインストールするには、サーバの新しいmonitoredDeployableAppsフォルダに単純にコピーしたmaven-antrun-pluginを使用します。その後、古いバージョンのアプリケーションがアンインストールされ、新しいバージョンが正常にインストールされます。アプリケーションを再インストールするとメモリ消費量が増加します

しかし!タスクマネージャーを見ると、javaプロセス(サーバー)のメモリ消費量が150-200Mbに増加していることがわかりました。そして最終的にアプリがOutOfMemoryErrorに落ちるまで、次のすべてのアップデートは同じことをします。

サーバのXmxは1024MBに設定されていますが、メモリ消費は〜2GBに達します。

また、http://gceasy.ioと冗長なGCログを分析しようとしました。GC Interval avg time4 sec 771 msです。 GCはしばしば始まりますが、とにかく助けにならないと私は結論づけることができます。

そして、なぜ私は自分のアプリを再インストールするたびにメモリ消費量が増え、決して落ちないのですか?

ありがとうございます!

+0

は、あなたが最後の2年間から任意のフィックスパックを使用してみましたか? – covener

+0

が8.5.5.11に更新されました – SergeiK

答えて

3

アプリケーションの再起動時のメモリ増加は、クラスローダーリークの特徴の1つです。アプリケーション外のコードによってアプリケーションクラスへの参照が保持されていると、アプリケーションのクラスローダー全体がガベージコレクションされなくなりますそれらのクラスローダー)。そのためには150MBが非常に大きいですが、他のものも持ちこたえている可能性があります。

アプリが独自のスレッドを作成している場合は、アプリクラスへの参照か、クラスローダーをスレッドコンテキストクラスローダとして保持するスレッドを通じて、これらの問題の大きな原因になります。アプリケーションが停止したときにアプリケーションが作成するスレッドをクリーンアップしていることを確認してください。また、WebSphereコンポーネント(それ自体の後でクリーンアップに失敗したもの)やアプリやサードパーティ製のライブラリ(おそらくJVMレベルでの参照の設定)の問題である可能性もあります。このKnowledge Centerの中で文書化されているように

のWebSphere 8.5は、リークの特定のタイプをチェックするために、いくつかの機能があります:https://www.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.nd.doc/ae/ttrb_configmemleak.html

関連する問題