私はJavaでシステムを設計しようとしています。ここで、ディスクから読み込まれたイメージやオーディオファイルなどのリソースを追跡し、参照がない場合はアンロードします。リソースを追跡し、必要ではない間にアンロード
C++では、削除演算子をオーバーライドできるので、参照を減らすことができます。 しかし、Javaは自動的なガーベジコレクションで動作し、オブジェクトが参照を持たないときにオブジェクトを破棄します。
私がResourceManagerにすべてのリソースを追跡しているので、オブジェクトへの参照は、それらが必要されていない場合ので、リソースがアンロードされることはありません、nullになることはありません。
エンティティからの参照がないうちにオブジェクトを削除すると同時にオブジェクトを追跡する方法はありますか?
私はそれがまた、オプション
マネージドGCランゲージは、非決定論的な破壊を持っているので、オブジェクトの破棄にリソースのクローズを実際に結びつけることはできません。それは私がJava/C#プログラミング時にC++から最も逃していることの一つです。 – Benj
自動的な方法はありません。あなたはrefcountingのいくつかの並べ替えを実装する必要があります。リソースを使用するすべてのものは、開始時に 'acquire'を呼び出し、最後に' release'を呼び出さなければなりません。 –