generated at
PythonのGC

PythonのGC
参照カウント


Pythonのメモリアロケータ
mallocなどのアロケーションまでに3層のメモリ構造がある
一番右側は辞書オブジェクトの生成時の代表的な関数のコールグラフ
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の関数スタック上にあり,ポータブルにルートを見つける方法はないでしょう

みどく

参考


たまたまみつけた関係ないやつ