日々精進

新しく学んだことを書き留めていきます

pythonのGCについて

pythonのGCについて調べたことのメモ。

  • 参照カウントと世代別mark&sweep方式
  • GCログを出す場合、gc.callbackにログを出力する関数を登録する。ただし、出力できる情報は限られている

docs.python.org

  • gc.set_debug(gc.DEBUG_STATS)で統計情報を出せるようになるが、標準エラー出力に出る
  • gc.get_count()が返すcount0,1,2の意味は以下参照。ドキュメントに何も説明が無いのは酷い。。

stackoverflow.com

  • gc.get_count()のcount0,1,2がgc.set_thresholdで設定した値になったらGCが実行される。つまり、「デフォルトでは、700個オブジェクトが増えた時点で第一世代GCが起動し、第二世代と第三世代は前世代GCが10回起動する度に実行される。」(以下記事より引用)

methane.hatenablog.jp