読者です 読者をやめる 読者になる 読者になる

Railsを動かした時のヒープの状態を詳しく調べてみた(グラフ付き)

このまえの続き
T_NODEは何故こんなに長生きなのか? - I am Cruby!
 

パッチの改良

gc_profile_lifetime_and_verbose_node_type_for_v_1_9_1_p0.patch

  • GC::Profiler に count_objects の値を持たせて, GC が起動したときにヒープの状態を記録するようにした.
  • T_NODE がやけに多くなったので, NODE の種類を特定するために node_type も記録するように count_objects を修正

グラフ

http://www.narihiro.info/resource/image/gc_count_statistic.png
Railsを起動したときのヒープの動き.
横軸はGC回数,縦軸はヒープ内における各オブジェクトの占有量(%).
 

元データ

グラフではわかりにくいと思うので,元データのodsを置いておきます.
真面目に見る人はこちらをどうぞ.
objectspace_statistics.ods
 

考察

T_STRING が途中からグインと伸びている.
T_NODE は一気に解放された後,安定して生き残っているよう.
(なんでだろう?)
 
T_NODE の中身を見ると NODE_WHILE が一番多い.
 
続く(かもしれない)