GC 実装者の設計により、無効化で GC を高速化することはできないと思います。彼らは、GC がどのように/いつ実行されるかについて、あなたが心配しないことを望んでいると確信しています。GC は、どこにでもある、あなたを保護し、見守っている存在のように扱ってください. .
個人的には、自己文書化の形式として変数を使い終わったときに、変数を明示的に null に設定することがよくあります。宣言して使用し、後で null に設定するのではなく、不要になった直後に null にします。私ははっきりと、「私は正式にあなたとの仕事を終えました...いなくなって...」と言っています。
GC された言語で無効化は必要ですか? いいえ、GC に役立ちますか? はい、多分いいえ、確かにわかりません。設計上、私は本当にそれを制御できません。このバージョンまたはそのバージョンでの今日の回答に関係なく、将来のGC実装は私の制御を超えて回答を変更する可能性があります. さらに、ヌル化が最適化されているかどうかは、必要に応じて派手なコメントにすぎません。
それが私の足跡をたどる次の愚かな愚か者に私の意図をより明確にするかどうか、そしてそれが時々GCを助ける可能性があるなら、それは私にとって価値がある. ほとんどの場合、私はきちんと整理された気分になり、Mongo は整理整頓された気分になるのが好きです。:)
私はそれを次のように見ています: プログラミング言語は、人々が他の人に意図のアイデアを与え、コンパイラに何をすべきかという仕事の要求を与えるために存在します.コンパイラはその要求をCPU用の別の言語(時には複数の言語)に変換します. CPU は、使用した言語、タブ設定、コメント、文体の強調、変数名などを大騒ぎする可能性があります。CPU は、どのレジスター、オペコード、およびメモリ位置を調整するかを伝えるビット ストリームに関するすべてです。コードで記述された多くのことは、指定した順序で CPU によって消費されるものに変換されません。私たちの C、C++、C#、Lisp、Babel、アセンブラなど、現実ではなく理論であり、作業明細書として書かれています。アセンブラー言語でさえ、あなたが見るものはあなたが得るものではありません。
「不要なもの」(空白行など)は「ノイズであり、コードを乱雑にするだけである」という考え方を理解しています。それは私のキャリアの初期の私でした。私はそれを完全に理解しています。この時点で、私はコードをより明確にする方向に傾いています。プログラムに「ノイズ」を 50 行も追加しているわけではありません。あちこちに数行あります。
どんな規則にも例外があります。揮発性メモリ、静的メモリ、競合状態、シングルトン、「古い」データの使用、およびそのようなすべての腐敗を伴うシナリオでは、それは異なります。メモリは一部ではないため、独自のメモリを管理し、適切にロックおよび無効化する必要があります。 GC'd Universe -- うまくいけば、誰もがそれを理解してくれます。それ以外の場合、GC された言語では、必要性や保証されたパフォーマンスの向上ではなく、スタイルの問題です。
一日の終わりには、GC の対象となるものとそうでないものを理解していることを確認してください。適切にロック、廃棄、および無効化します。ワックスオン、ワックスオフ。息を吸い、息を吐きます。そして、私が言う他のすべてについて:それが気分が良いなら、それをしてください. あなたの走行距離は異なる場合があります...そうあるべきです...