問題:
「クライアント」を生成する JTabbedPane があります。各クライアントは、URLClassLoader を使用して jar ファイルからロードされたアプレットのインスタンスです。基本的に、各タブにはゲーム アプレットが含まれています。
タブが生成されるたびに、タスク マネージャーは、使用中のメモリ量が増加していることを示します。それは結構です。ただし、タブを閉じると、アプレットは停止して破棄されますが、タスク マネージャーによるメモリ使用量は同じままです。
保証されていない System.gc を呼び出してみましたが、まったく何もしません! アプレットへのすべての参照を無効にしようとしましたが、それでも何もしません。
可能であれば私の解決策:
すべてのタブには、ゲームを実行する独自の JVM/プロセスがあります。タブが閉じられると、アプレットは停止して破棄され、プロセス/JVM が停止しているため、プロセス/JVM によって使用されたメモリが OS に返されますか?
どうすればそのようなことができますか?JTabbedPane の各タブで Jar を実行したり、Jar を実行する新しい JVM を作成したりすることはできますか?
そうでない場合、閉じたすべてのタブのメモリをクリアするにはどうすればよいですか?