GCについて勉強してみる。(第1回)
Rubyist九州でid:autherNariid:authorNari(ID間違えてた。ごめんなさい。2008.3.16 12:14)さんのGC愛を目の当たりにした俺は自分もGCを勉強してみることにした。
GCとは何か
- 必要のないメモリ領域(以下「メモリ」)を開放すること
- →では「必要のないメモリ」とはどういう状態にあるメモリなのか
- 「必要なメモリ」以外の、オブジェクトが格納されたメモリ(オブジェクトが格納されていないメモリは開放する必要もない)
- →「必要なメモリ」とは何か
- 「確実に必要なオブジェクト」が格納されているメモリ
- 「確実に必要なオブジェクト」から参照されたオブジェクトが格納されているメモリ
- そのオブジェクトから参照されたオブジェクトが格納されているメモリ
- さらにその(略)..といった具合にずーっとたどっていけるオブジェクトが格納されたすべてのメモリ
- →で、「確実に必要なオブジェクト」とは何か
- この、「確実に必要なオブジェクト」のことをGCの専門用語では「GCのルート(root)」と呼ぶ。(単に「ルート」とも言う)
- つまり、ルートからたどれないオブジェクトが格納されたメモリは「必要のないメモリ」であり、このメモリを開放することがGCである。
参考文献
http://wiki.livedoor.jp/author_nari/d/GC
http://i.loveruby.net/ja/rhg/book/gc.html
今日はとりあえずここまで。とりあえず参考文献の最後までを自分の言葉で言いかえていく作業を続けてみようと思う。(一部丸写しだけど)wikiのほうはこれから増えるかもしれないけど。まあ頑張る。