ガベージコレクションのアルゴリズムと実装 第9章「Python の GC」その1

ガベージコレクションのアルゴリズムと実装

ガベージコレクションのアルゴリズムと実装

今日から実装編です。第9章「PythonGC」を読んでいきます。長いので何日かかかりそうです。

それにしても、第9章の扉絵がかわいい。

実装編はあまり詳細にメモしていてもただの引き写しになってしまうので感想程度にしておきます。

  • Python のオブジェクトはサイズ可変みたい
  • 小さなサイズのメモリ確保のためにarenaを作っている。256バイト以下の場合
  • arena は256KB 固定長。poolは 4KB 固定長
  • ブロックは8バイトの倍数。プール内では固定
  • プールはグローバル変数から双方向循環リストでブロックサイズ毎に管理されている

今日は低レベルアロケータのところまでです。こういうメモリ管理のコードも楽しいですね。