フラッシュ アプリケーションを最適化するために来ました。
ちょっとした質問ですが、null と dispose の違いは何ですか?
そして、どの状況でどれを使用しますか?
ご提案いただきありがとうございます。
フラッシュ アプリケーションを最適化するために来ました。
ちょっとした質問ですが、null と dispose の違いは何ですか?
そして、どの状況でどれを使用しますか?
ご提案いただきありがとうございます。
null
との違いdispose()
:
null
メモリを占有するオブジェクトへの参照を 1 つ削除します。
dispose()
は、さまざまなことを実行できるコードを呼び出しますが、通常は への 1 つ以上の内部参照を設定するために使用されnull
ます。
私はdispose()
、メモリを占有し、将来のある時点でガベージコレクションが必要になる可能性のある別のオブジェクトを作成、所有、または管理するオブジェクトに public 呼び出しを追加することに慣れています。IDisposable
実際、必要な呼び出しを追加するのを忘れないように、というインターフェイスを作成しました。
interface IDisposable
{
function get isDisposed():Boolean;
function dispose():void;
}
後で、インターフェースを実装するオブジェクトで...
private var _isDisposed:Boolean = false;
public function get isDisposed():Boolean
{
return _isDisposed;
}
public function dispose():void
{
if( isDisposed ) return;
// TODO: Call dispose() on any owned objects
// and set all complex objects to null.
_isDisposed = true;
}
null に設定すると、どこからも参照されなくなった後にのみ GC がオブジェクトを収集できるため、より安全です。たとえば、まだ参照されている BitmapData を dispose() すると、例外が発生します。特定のオブジェクトがどこからも参照されていないことが確実な場合、たとえば、問題の BitmapData が一時的なものであり、それへの参照が 1 つしかない場合は、dispose() を使用してメモリを解放できます。一時オブジェクトの迅速な割り当て/割り当て解除の場合の最善の解決策は、一時オブジェクト用にメモリを予約し、必要なときに実際に再利用することです。