1

未確認のメモリ リークを検索するタスクを取得するという不幸がありました。YourKit を使用するのはこれが初めてなので、何を探すべきかはわかっていますが、どこをどのように探せばよいかわかりません。

私の理解では、特定のオブジェクトが解放されていないため、時間が経つにつれてメモリ消費が増加します。Railsでそれを行うのはかなり難しいですが、誰かが方法を考え出したと思います.

メモリ テレメトリは次のようになります。

なんというトレンド!

時間の経過とともにGCが増加するという事実を無視すると、Old Genメモリが増加しているように見えます...多分。

ここで、おそらく、そこに積み上げられているオブジェクトと、それらを生成するオブジェクトを知る必要があります。

これまでに行った手順:

  1. トリガーCG
  2. 「オブジェクト割り当ての記録」を開始しました(100日ごと...何かに役立つかもしれない気がします)
  3. しばらく待った
  4. 別の CG をトリガーした
  5. メモリダンプを実行しました

YourKit でメモリ スナップショットを開いた後、何を探すべきかわかりません。

それは悪いですよね?

Allocations に Call Tree があります。ツリーを展開すると、実行されている Rails コードのヒントが得られますが、見ているものが実際に必要なものであるかどうかはわかりません。

私は見ているのですか?

Javaプロファイリング、Yourkitの使用、私を正しい方向に向けることができる人はいますか?

編集:マージされたパスビューで表示できるものの例:

ここに画像の説明を入力

4

1 に答える 1

2

1) オブジェクト割り当て記録を使用しないでください。メモリリークの発見にはほとんど役に立ちません。

2) オブジェクトの生成を定期的に進めることをお勧めします (非常に高速で、オーバーヘッドが追加されません)。http://www.yourkit.com/docs/java/help/generations.jspをご覧ください。

オブジェクトを「年齢」で分割し、ヒープが成長する理由を理解できるようになります。

Tomcat を使用しているため、"Web アプリケーション" http://www.yourkit.com/docs/java/help/web_applications.jspを参照すると役立つ場合があります。そこに見える。

よろしく、 ウラジミール・コンドラティエフ YourKit、LLC

于 2015-01-16T08:05:39.303 に答える