0

私のメモリリークは次のようになります。 リーク

の経験があまりないので、Eclipse Memory Analyzer次の 2 つの質問に答えることができるかどうか疑問に思います。

  • これらのインスタンスのほとんどが割り当てられたソース コードの位置は?
  • それらがガベージコレクションされなかった理由は何ですか?
    1. それらは停止しましたが、まだどこかで参照されていますか?
    2. それらはまだ実行中ですか、それともスリープ中ですか?

編集: sbridgesが正しかったように見え、私のスレッドは死ぬことはありません。ただし、スタックトレースに私のコードが含まれていないように見えるため、理由はよくわかりません。私が ExecutorService を使用する方法は、どういうわけか間違っているに違いありません。

スレッド

4

1 に答える 1

3

あなたのコードがスレッドを作成しているところのどこかで、それらのスレッドは決して死ぬことはありません。スレッドはgcルートであるため、スレッドをガベージコレクションすることはできません。これをデバッグする最も簡単な方法は、アプリを起動し、スレッドの数が増えるまで待ってから、JConsoleを使用してアプリに接続し、スレッドのスタックトレースを確認することです。スタックトレースを表示するには、[スレッド]タブをクリックし、ライブスレッドの下のスレッドをクリックします。

于 2011-08-27T16:59:43.193 に答える