ガベージ コレクションのしくみに興味があります。マーク アンド スイープ、ストップ アンド コピー、世代別 GC などの機能について調べました。これらのいくつかを実装して、それらの動作を比較して実験したいと思います。自分で実験を始める良い方法は何ですか? 理想的には、C、Java、または Python の何か (ただし、最後の 2 つはそれ自体がガベージ コレクションされるため、それらを使用するのは難しいようです...)
7 に答える
自分で遊んだことはありませんが、C/C++ での使用について常に言及されるのはHans Boehm の.
.NET ランタイムと Java ランタイムは現在オープン ソースであるため、現在サポートされているプログラミング言語を試してみたい場合は、ランタイム自体を試すことができます。ただし、これを自分で行いたい場合は、おそらく独自の言語を持つ独自のランタイムを作成する必要があります。
オウムには複数のガベージコレクターがあります。
Factorプログラミング言語を開発しているSlavaPestovは、ガベージコレクターの実装について多くの投稿を書きました。あなたはこのリンクでそれに投稿を見つけることができます:
http://factor-language.blogspot.com/search?q=garbage+collection
特に2006年9月24日日曜日の投稿から開始します。
MMTkには、高性能のガベージ コレクターが多数含まれています。以下が含まれます。
- コレクターのコピー
- コレクターのトレース
- 参照カウントコレクター
また、次の機能も備えています。
- 世界のコレクターを止める
- 並行コレクター
研究プラットフォームであるため、世代参照カウントコレクターなどのいくつかの事前コレクターがあります。
遊ぶのは楽しいですが、ガベージ コレクションは闇の芸術です。機能させるためではなく、最新の VM と同じ効率で機能させるためです。
私たちは、malloc よりもスタック割り当てに匹敵する割り当て速度を実現するマルチステージと魔法について話しています。
エデンのコンセプト全体が揺さぶられます。
使用されている手法に関するホワイトペーパーを読むことをお勧めします。
これは、概要がよくわかる記事です(簡単なグーグル/スキャンから)
独自の JVM を実装します。派手なことは何もなく、ただの基本です。JVMコードを生成するプログラム/コンパイラ/言語はたくさんあるので、テストする材料はたくさんあります.