PythonのGC
PythonのGC
参照カウント
Pythonのメモリアロケータ
mallocなどのアロケーションまでに3層のメモリ構造がある
一番右側は辞書オブジェクトの生成時の代表的な関数のコールグラフ
code:txt
第3層: オブジェクト特有のメモリアロケータ : PyDict_New()
第2層: Pythonのオブジェクトアロケータ : PyObject_GC_New(), PyObject_Malloc()
第1層: Python低レベルメモリアロケータ : new_arena()
第0層: 汎用的な基礎アロケータ(glibcのmallocなど) : malloc()
第0層
mallocのようなアロケータ
Pythonでは、割り当てるメモリのサイズによってアロケーションの方法を変える
256byteより大きければmalloc、小さければ1層、2層の出番になる
マークもするし、スイープもするけどMark & Sweep GCではない(?)
拡張モジュールが動作している為,Pythonはルートセットを完全に取り決める事は決して出来ないからです
オブジェクトはCの関数スタック上にあり,ポータブルにルートを見つける方法はないでしょう
みどく
参考
たまたまみつけた関係ないやつ