1. ホーム
  2. ジャワ

[解決済み] Java RMI tcp connect メモリの問題

2022-03-13 08:30:25

質問

プロファイラで問題を発見したのですが、修正する方法がわかりません。 アプリケーションをロードすると、このようなノコギリ波パターンが表示されます。プログラムはアイドル状態ですが、ここに表示されているようにメモリを消費しています。

サンプラースレッドのメモリ割り当てを確認したところ、私のeth0 (172.16.20.51) へのRMI TCP Connectionが毎秒半分のメガバイト (413,213) でメモリを消費しており、結果として「世界を止める」GCを記録することになりました:-)。 この問題は、どのポート、どのスレッドで発生しているのかが分からないため、原因を追跡することができませんでした。 -com.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false のフラグを立てましたが、役に立ちませんでした。 何かアイデアがあれば教えてください。

解決方法は?

私はこれが古い投稿であることを知っているが、私は同じ問題でそれを偶然見つけたので、答えはあまりにも他の人を助けるかもしれません。

RMI TCP 接続スレッドは、Virtual VM がメモリ使用量をサンプリングする方法です。したがって、高い割り当てバイト/秒は、プロファイリング時に期待されるものであり、(必ずしも)アプリケーションに問題があることを示すものではありません。例えば このSOの質問 .

ヒープダンプについては、Visual VM の Monitor と Sampler のタブに 'Heap Dump' ボタンがあり、ヒープダンプファイルを保存することができます。これを読み込むことで、例えば、フリーの Eclipseメモリアナライザ(MAT) メモリリークなどを調べることができます。