私は、高校を卒業したときに、学習経験と私の履歴書の両方のために、直近の週末に私自身のスクリプト言語を書き始めました。これまでのことがうまくいったので、基本型(null、boolean、number、string)と演算子の優先順位を持つ数式を解析して、基本的なマークとスイープガベージコレクタを用意しました(マーク/スイープコレクタ私は世代のガベージコレクタを実装します、私は素朴なマーク/スイープが非常に高速ではないことを知っています)。私は、ガベージコレクタのために参照されたオブジェクトをどのように格納するかは確信しています。現時点では、私はそれのメモリへのポインタと、マークされているかどうかを示すクラスGCObjectを持っています。リンクされたリストをそのクラスの参照されたオブジェクトに格納する必要がありますか?私は他の言語のガベージコレクタを見てきましたが、GCObjectごとにリンクされた参照リストはないので、混乱しています。マークとスイープガベージコレクタへの参照の保存方法は?
TLDR:他のオブジェクトによって参照されているオブジェクトをマーク掃引ガベージコレクタに格納するにはどうすればよいですか?すべてのGCObjectにオブジェクトのリンクリストを保存するだけですか?
ありがとうございます。
はい私は既にオブジェクトを反復処理する方法を持っていますが、リンクリストに格納されている参照を格納する必要があるのか、それとも何か別の方法でそれを行うべきかどうかは疑問でした。リンクされたリストはちょっと残酷すぎるようです。 –
あなたは誤解されているようです。あなたは "根源的な参照"をリストやその他のものに保存する必要はありません。これらの参照はすでにルートに格納されています。 – davmac
彼らはどうやって根に保存されているのですか、それは私が求めていたものです。しかし、私はすでに答えを他のところで見つけました。とにかく、ありがとう。 –