5

非インタープリタード言語にガベージコレクターを持たせることは可能ですか? 解釈された言語では、インタープリターがプログラムを 1 行ずつ実行するため、インタープリターはランタイムに GC を提供することもできます。しかし、コード自体にGCを構築せずに、他の言語用のガベージコレクターを持つことは可能ですか?

4

8 に答える 8

11

ガベージ コレクションでは、ランタイムがそれらを識別してガベージ コレクションに使用できるように、ポインタ変数を特別な方法でマークする必要があるだけです。解釈/コンパイルとは関係ありませんが、代わりに特別なランタイムと、各変数に追加のデータを格納する必要があります。

于 2009-05-06T10:26:19.923 に答える
6

まあ、.NET 言語 (IL に発行するもの - C#、VB.NET、MC++ など) は解釈されず (特に NGEN を使用する場合)、完全なガベージ コレクションがあります。

ジャバも同様。

于 2009-05-06T10:26:24.790 に答える
5

はい - http://www.hpl.hp.com/personal/Hans_Boehm/gc/

于 2009-05-06T10:38:34.247 に答える
3

Haskell には、ネイティブ コードにコンパイルされているか解釈されているかに関係なく、ガベージ コレクションがあります。

于 2009-07-14T08:47:01.103 に答える
2

新しい C++0x には、ガベージ コレクションの実装を容易にする機能が含まれています。たとえば、このインタビューを参照してください。

于 2009-05-06T10:31:41.660 に答える
0

はい。

スマート ポインターを実装した C++ は、スマート ポインターの参照カウントがゼロになるとガベージ コレクションを実行します。

ガベージ コレクションがあります。あなたはそれを自分で構築しませんでした。

于 2009-05-06T10:25:10.817 に答える
0

現在、Objective-C 2 にはガベージ コレクションがあり、C++ で使用できるガベージ コレクション ライブラリもあります。

オブジェクトツリーをトラバースできるようにオブジェクトを検査できる言語があれば、それは可能だと思います。

于 2009-05-06T10:26:58.783 に答える