私は、GCインプリメンターの設計により、無効化でGCを高速化できないと信じています。GCがどのように/いつ実行されるかを気にしないでほしいと私は確信している-ユビキタスな存在のように扱う、あなたのために...(弓は頭を下に、空に拳上げ)を保護し、見守ります。.. 。
個人的には、セルフドキュメンテーションの形式として変数を使い終わったら、変数を明示的にnullに設定することがよくあります。宣言したり、使用したり、後でnullに設定したりはしません-不要になった直後にnullにします。はっきり言って、「私は正式にあなたと一緒に終わりました...行ってしまいます...」
GC化された言語では無効化が必要ですか?いいえ。GCに役立ちますか?たぶんはい、多分いいえ、確かにはわかりません。設計上、実際には制御できません。このバージョンでの今日の回答に関係なく、将来のGC実装は私の制御を超えて回答を変える可能性があります。加えて、nullが最適化されている場合、または最適化されている場合は、ファンシーなコメントに過ぎません。
私の足跡をたどる次の貧しい愚か者に私の意図がより明確になるかどうか、そしてそれが時々GCに役立つかもしれない「可能性」があるなら、それは私にとってそれだけの価値があります。主にそれは私がきちんとしていてクリアであることを感じさせます、そして、モンゴはきちんとしていてクリアであることを好みます。:)
私はそれを次のように見ています:プログラミング言語は、他の人々に意図の意図とコンパイラーに何をすべきかのジョブ要求を与えることを可能にするために存在します-コンパイラーはその要求をCPUの異なる言語(時にはいくつか)に変換します- CPUは、使用した言語、タブ設定、コメント、文体的強調、変数名などを簡単に提供できます。CPUは、ビットストリームがすべてのレジスタとオペコード、メモリの場所をいじるのを指示します。コードで書かれた多くのものが、指定したシーケンスでCPUが消費するものに変換されません。私たちのC、C ++、C#、Lisp、Babel、アセンブラ、または現実ではなく理論であるものはすべて、作業明細書として書かれています。あなたが見るものは、あなたが得るものではありません、はい、アセンブラー言語でさえです。
「不要なもの」(空白行など)の考え方は「ノイズでコードが乱雑になる」に過ぎません。それは私のキャリアの初期の私でした。完全にわかりました。この時点で、コードをより明確にするものに傾いています。プログラムに50行の「ノイズ」を追加しているのではなく、あちこちに数行あります。
ルールには例外があります。揮発性メモリ、静的メモリ、競合状態、シングルトン、「古い」データの使用、およびそのようなすべての腐敗があるシナリオでは、それは異なります。独自のメモリを管理する必要があり、メモリが含まれていないため、適切にロックおよび無効化する必要があります。 GC'd Universe-うまくいけば誰もがそれを理解します。それ以外の時間は、GCの言語では、必要性や保証されたパフォーマンスの向上ではなく、スタイルの問題です。
1日の終わりに、GCに適格なものと適格でないものを必ず理解してください。適切にロック、破棄、無効化します。ワックスオン、ワックスオフ; 息を吸って、息を吐いて; そして私が言う他のすべてのために:それが気分が良いなら、それをしてください。あなたの走行距離は変わるかもしれません...