de-vraag
  • 質問
  • タグ
  • ユーザー
通知:
報酬:
登録
登録すると、質問に対する返答やコメントが通知されます。
ログイン
すでにアカウントをお持ちの方は、ログインして新しい通知を確認してください。
追加された質問、回答、コメントには報酬があります。
さらに
ソース
編集
Erick Robertson
Erick Robertson
質問

jvisualvmでヒープをダンプすると、Runnableへの "Java Frame" GCルート参照を削除するにはどうしたらいいですか?

私は jvisualvm を使ってアプリケーションのメモリリークをチェックしています。ヒープ・ダンプを実行すると、ガベージ・コレクションされているはずのオブジェクトが開いていることがあります。

When I do a "Show Nearest GC Root" command on them, it shows me that the root is a class which I defined which implements the interface Runnable. The reference is listed as (java frame), which I know has something to do with threading. When I expand the tree for this node, it opens up and shows . So it seems pretty clear that this is not a reference I'm keeping open, but something internal to Java.

jvisualvmにリストされているGC Rootオブジェクトは、 AnalyticNode extends Node 型であり、 Node implements Runnable です。このルートオブジェクトは、「フレーム」という単語が使用されているにもかかわらず、AWT、Swing、または他の重量のあるユーザーインターフェイスコンポーネントとは何の関係もありません。この場合、「フレーム」という語はスレッディングを意味します。

それで、Javaは最後のRunnableへの参照を、これを保持しているどこかで保持していますか? Javaがこのリファレンスをリリースするように指示して、ヒープ・ダンプのガベージ・コレクションを正しく行うことができる方法はありますか?

何が起きてる?

3 2011-10-27T18:04:39+00:00 2
プログラミング
java
memory-leaks
garbage-collection
jvisualvm
erickson
27日 10月 2011 в 6:12
2011-10-27T18:12:01+00:00
さらに
ソース
編集
#56791268

この文脈において、「フレーム」はスタックフレームを指す。この Runnable は、実行中のスレッドのターゲットではなく(またはそれに加えて)、実行中のスレッドのスタック上のフレーム内のローカル変数に格納されているようです。フレームに関連付けられたメソッドが返ってくると、コレクションに適格になります。


後のコメントに基づいて、私の推測では、あなたのカスタムスレッドプールには、 Runnable が割り当てられているローカル変数があります。おそらくループの外側でスコープが大きすぎ、ループの繰り返しごとにクリアされません( null )。

私はワーカースレッドで以下のようなコードで記述されているものと一致する状況を再現することができます:

Runnable target = null;
while (true) {
  target = queue.take();
  target.run();
}

ループ内にあるように target の宣言をクリーンアップして問題を修正します。

私はコアJavaから Executor 実装に切り替えるか、カスタムスレッドプールの関連コードを修正したい場合はそれを掲示することをお勧めします。

4
0
Sarel Botha
27日 10月 2011 в 6:09
2011-10-27T18:09:00+00:00
さらに
ソース
編集
#56791267

作成したオブジェクトで何をしましたか?あなたはスレッドを作成し、それをポイントしましたか?この場合、run()内のコードの実行を許可してスレッドが停止していることを確認する必要があります。

1
0
質問の追加
カテゴリ
すべて
技術情報
文化・レクリエーション
生活・芸術
科学
プロフェッショナル
事業内容
ユーザー
すべて
新しい
人気
1
Денис Анненский
登録済み 1日前
2
365
登録済み 5日前
3
True Image
登録済み 6日前
4
archana agarwal
登録済み 1週間前
5
Maxim Zhilyaev
登録済み 1週間前
© de-vraag :年
ソース
stackoverflow.com
ライセンス cc by-sa 3.0 帰属