私はいくつかのサードパーティ製のソースコードを使用していますが、これはGUIで実行することを目的としていますが、GUIを使用せずに統合しており、使用しているサードパーティのコードから重大なメモリリーク。ですから、サードパーティアプリケーションインスタンスのオブジェクトを何らかの形でサンドボックスのように作成して、後でオブジェクトを削除し、そのコードが呼び出すオブジェクトへの参照をすべて削除することができれば、私は疑問に思っています。ガベージコレクタJavaを使用して「サンドボックス」モードでライブラリを実行するにはどうすればよいですか?
可能なことはありますか?同様のシナリオを達成するための代替手段は何ですか?唯一の可能性はjava -jar customApp ...のようなプロセスビルダーから他のアプリケーションを呼び出すことです。それは少し醜いですが...
EDIT: このコードを別のスレッドで実行し、スレッドが完了するのを待つと、ガベージコレクタがそこに呼び出されたものに関連するすべてのオブジェクトを削除しますか?
あなたは自分のオブジェクトにそのネイティブコードを確実にラップすることができますが、メモリが漏れてしまうことはありません。 GCには、ネイティブコードによって割り当てられたメモリを処理する方法がありません。 – duffymo
これは現時点では信頼できるとは思わない。クラスオブジェクトもアンロードすることができなければなりません.JVMがすべての状況でそれを行うことはできません。メモリリークのないライブラリを見つけるのに最適です。 (また、Javaライブラリではなくネイティブライブラリを意味する場合は、すべてのベットは間違いなく行われます)。 – markspace