2012-02-27 9 views
-5

可能性の重複:
difference between destructor and garbage collectorガベージコレクタとデストラクタ

は最近、私は今、私は

[OK]を、しましょうという結論に来た答えに従って、このquestionを尋ねました私はコンセプトを持っているかどうかをチェックします.GCは、オブジェクトの処分が必要かどうかをチェックするために使用され、デストラクタを呼び出す場合はGCが何も破壊することはできません一方、Destructorはクラス終了時にオブジェクトを破壊し、デストラクタはメモリの問題をチェックできません。最後にすべてを破壊します。私は正しい?

私はそこにコメントしましたが、回答がありませんでしたので、ここで新しい質問を投稿しようとしました。返事は誰でも返事できます、私の結論は右です

+4

コメントを追加しました* 9分前*。もっとお待ちください。 –

答えて

1

いいえ、デストラクタ(〜myClass)は、リソース(ファイル、接続など)を解放するような、オブジェクトが不要になったときに彼がしたいものだけを行います。 オブジェクトを設定する(接続を取得するなど)コンストラクタ(myClass)の反対側です。 GCは、スコープから外れるか、デストラクタが呼び出されたときにmyClassオブジェクトへのポインタをすべて削除します(私は思う)。したがって、オブジェクトがメモリ内にあった場所を再度割り当てることができます。

+0

驚いたことに、GCは範囲外になるほとんどのオブジェクトについて*何も知りません。代わりに、それは主に、あらゆる種類の参照が存在するものを新しいメモリ領域にコピーし、今収集した世代のオブジェクトを保持するために以前に使用されていたメモリのすべて*が再利用可能であると宣言することによって機能します。 WeakReference、モニターロック、固定されたオブジェクト、登録済みファイナライザーなどいくつかのコーナーケースがありますが、ほとんどの場合、ガベージコレクターは、放棄されたオブジェクトの数を認識していません。 – supercat

関連する問題