未確認のメモリ リークを検索するタスクを取得するという不幸がありました。YourKit を使用するのはこれが初めてなので、何を探すべきかはわかっていますが、どこをどのように探せばよいかわかりません。
私の理解では、特定のオブジェクトが解放されていないため、時間が経つにつれてメモリ消費が増加します。Railsでそれを行うのはかなり難しいですが、誰かが方法を考え出したと思います.
メモリ テレメトリは次のようになります。
時間の経過とともにGCが増加するという事実を無視すると、Old Genメモリが増加しているように見えます...多分。
ここで、おそらく、そこに積み上げられているオブジェクトと、それらを生成するオブジェクトを知る必要があります。
これまでに行った手順:
- トリガーCG
- 「オブジェクト割り当ての記録」を開始しました(100日ごと...何かに役立つかもしれない気がします)
- しばらく待った
- 別の CG をトリガーした
- メモリダンプを実行しました
YourKit でメモリ スナップショットを開いた後、何を探すべきかわかりません。
Allocations に Call Tree があります。ツリーを展開すると、実行されている Rails コードのヒントが得られますが、見ているものが実際に必要なものであるかどうかはわかりません。
Javaプロファイリング、Yourkitの使用、私を正しい方向に向けることができる人はいますか?
編集:マージされたパスビューで表示できるものの例: