私のプログラムは複数のスレッドを使用しており、完了後に各スレッドのメモリを解放する必要があります。スレッドがdoInBackground()
メソッドを完了して終了するか、またはcancel()
によって停止するかどうかにかかわらず、スレッド自体はそこにとどまります(Jconsoleにはまだ表示されます)。Swingworkerによって割り当てられたメモリを解放するにはどうすればいいですか?
Swingworker
インスタンスを逆参照し、強制的にガベージコレクションを実行しますが、Javaプロセスはメモリを解放しません(Windowsタスクマネージャなど)。
終了したSwingworker
スレッドを完全に削除するにはどうすればよいですか?
いくつかの複雑な処理中にいくつかの場所で割り当てるメモリを解放するにはどうすればよいですか?
アドバイスをいただければ幸いです。ありがとう。
Okay 、 ありがとうございました。 JVMがOSにメモリを返すことに嫌気がしているという発言は、何が起こっているのかについての正しい説明です。そして、はい、JConsoleは、ガベージコレクションを強制するとヒープメモリが返されることを示しています。 – Lulach