9

問題の説明

Wildfly 8.2.1 で Java8 アプリケーションを 1 つデプロイするたびに、Metaspace メモリ プールから約 30 ~ 40 MB が使用されることに気付きました。それは問題ありませんが、同じアプリを再デプロイすると、メタスペースのメモリ使用量が同じ 30 ~ 40 MB 増加しているのに対し、既に割り当てられている古いメモリは解放されません。

私はそれに気付かないでしょうが、問題は、約 20 個のアプリケーションがあり、時々、同時に最大 10 個のアプリケーションを再デプロイする必要があるということです。その結果、恐ろしい絵が生まれます。

ここに画像の説明を入力 基本的に、示されているのは、10 個までのアプリケーションの 2 回の再デプロイです。

古いクラスに割り当てられたメモリを GC が解放できない理由がわかりません。このサーバーには合計 16 GB の物理メモリがあるため、すべてのアプリを最大 20 ~ 40 回再展開できます。アプリ サーバーが制限に達し、コマンドへの応答を停止します。

したがって、誰かが実際の問題が何であるかを理解するのを手伝ってくれたら、とても感謝しています:

  1. それはJava8の問題ですか?(jdk 1.8.0_40-b26)
  2. Wildfly 8.2.1 の問題ですか?
  3. または、コードベースが原因であるという答えはできるだけ単純ですか? もしそうなら、本当の理由は何か教えていただけませんか?

私のコードベースに関連するいくつかの詳細

1) Wildfly と共に、2 つのスタンドアロン HornetQ サーバーを使用します。各アプリケーションは、それぞれに少なくとも 5 つの同時コンシューマーを持つ最大 5 つのチャネルを使用します。これにより、アプリごとに少なくとも 25 スレッドになり、合計で少なくとも 25*20 = 500 スレッドになります。

2) すべての低レベル JMS 操作には、Spring JMS を使用します。

4

2 に答える 2

1

WildFly 10.0.0.Final "java.lang.OutOfMemoryError: Metaspace" が発生し、修正される予定です。Wildfly の Agile Board をフォローするために参照してください

https://issues.jboss.org/browse/WFLY-6173

于 2016-07-27T07:19:18.320 に答える