私はいくつかのメモリの問題を抱えたアプリケーションを持っているので、VisualVMのようなプロファイラーで遊び始めました。
デバッグでアプリケーションを起動し、ブレークポイント(アプリケーションを一時停止)に到達した場合でも、いくつかのクラス(主に、、、、、 ...)のインスタンスが多数作成されているのがint
わかります。char
Object
TreeMap$Entry
何故ですか?
私はいくつかのメモリの問題を抱えたアプリケーションを持っているので、VisualVMのようなプロファイラーで遊び始めました。
デバッグでアプリケーションを起動し、ブレークポイント(アプリケーションを一時停止)に到達した場合でも、いくつかのクラス(主に、、、、、 ...)のインスタンスが多数作成されているのがint
わかります。char
Object
TreeMap$Entry
何故ですか?
ブレークポイントは、おそらくそれにヒットしたスレッドのみを中断し、他のスレッドは意図した作業を喜んで続けます。それらが何をするかを知るために、それらの名前が少し明らかになるかもしれませんが、スレッド ダンプに勝るものはありません (これは VisualVM に任せることができます)。
また、通常、1 つのブレークポイントに対して、1 つのスレッドだけを中断するか、すべてのスレッドを中断するかを決定できます。もちろん、正確にこれを行う方法はIDE固有です(ただし、通常は「ブレークポイントプロパティ」などで)。
ほとんどの Java アプリケーションにはスレッドがほとんどありません。少なくとも 2 つ: メイン アプリケーション スレッドと GC (ガベージ コレクター) スレッド。
アプリケーションをデバッグしてブレークポイントで停止するときは、常に (ほとんどの場合、Web およびマルチトレード アプリケーションを除外して) スレッドを 1 つだけ停止します。また、デバッグモードではいくつかの追加スレッドを追加できます。