0

私はいくつかのメモリの問題を抱えたアプリケーションを持っているので、VisualVMのようなプロファイラーで遊び始めました。

デバッグでアプリケーションを起動し、ブレークポイント(アプリケーションを一時停止)に到達した場合でも、いくつかのクラス(主に、、、、、 ...)のインスタンスが多数作成されているのがintわかります。charObjectTreeMap$Entry

何故ですか?

4

2 に答える 2

2

ブレークポイントは、おそらくそれにヒットしたスレッドのみを中断し、他のスレッドは意図した作業を喜んで続けます。それらが何をするかを知るために、それらの名前が少し明らかになるかもしれませんが、スレッド ダンプに勝るものはありません (これは VisualVM に任せることができます)。

また、通常、1 つのブレークポイントに対して、1 つのスレッドだけを中断するか、すべてのスレッドを中断するかを決定できます。もちろん、正確にこれを行う方法はIDE固有です(ただし、通常は「ブレークポイントプロパティ」などで)。

于 2013-02-08T10:17:59.403 に答える
0

ほとんどの Java アプリケーションにはスレッドがほとんどありません。少なくとも 2 つ: メイン アプリケーション スレッドと GC (ガベージ コレクター) スレッド。

アプリケーションをデバッグしてブレークポイントで停止するときは、常に (ほとんどの場合、Web およびマルチトレード アプリケーションを除外して) スレッドを 1 つだけ停止します。また、デバッグモードではいくつかの追加スレッドを追加できます。

于 2013-02-08T10:19:32.700 に答える