2011/02/19 Python Hack-a-thon 2011.02 LT部メモ
- kimukou2628
- 4552
- 0
- 4
- 2
またマーク&スイープの特徴として、世代別GCと呼ばれるものを持っている。これはオブジェクトを世代別に判別し、できたてのオブジェクトはGCにより削除されやすい。長生きのオブジェクトはなかなか削除されない。3世代に分けて若いオブジェクトを重点的にチェックして回収を行う #aodag
2011-02-19 15:17:15#aodag Python2.6から「マーク&スイープ」機能を実装 ・到達不能なオブジェクト検出 =>Cのコードで300-400行程度 ・世代別 A)できたてのObj死にやすい B)長生きObjはなかなか削除されない<=3世代に分けて若いObjを重点チェック
2011-02-19 15:17:48PythonのメモリモデルよくわかってないんだけどJavaみたいにHeapがedenとかsuvivorとかに別れてるのかな?あと、GC中って実行中のスレッドどうなるん? #aodag
2011-02-19 15:18:04謎のハッシュタグ #aodag 笑 http://atnd.org/events/9977 Python Hack-a-thon 2011.02
2011-02-19 15:18:06GCの処理時間を測定すると、オブジェクトが100万個単位になってくると秒単位の遅延が起こる。なおGC中はPythonのインタープリタは完全に停止する。 #aodag
2011-02-19 15:19:19#aodag GCの処理時間) Object100万個 2.6>2.7>3.1 という感じでGC処理時間が短くなる GC中=>インタプリタ停止するのでObjの作りすぎはやめましょう
2011-02-19 15:19:26GC関係のネタがPython Cookbookに載っていた気がする。 「8.3 ガベージコレクションの課程をデバッグ」 これか #aodag
2011-02-19 15:20:50メモリが開放できないケースがある。__del__() を持っているオブジェクトはマーク&スイープで削除できない。Pythonインタープリタの判断では削除ができない。よってプログラマ側でgc.garbageをチェックして掃除が必要。基本的に __del__()は悪。 #aodag
2011-02-19 15:22:12