Effective Rubyを読んでいます(最終チャプター)

tl;dr

「Effective Ruby」の項目43~48を読みました。

:arrow_down: 目次です。

  • 項目43 依存gemのバージョンの上限を指定しよう
  • 項目44 Rubyのガベージコレクタの動作に慣れよう
  • 項目45 Finalizerでリソースリークを防ぐセーフティネットを作ろう
  • 項目46 Rubyプロファイリングツールを使おう
  • 項目47 ループ内ではオブジェクトリテラルを避けよう
  • 項目48 コストの高い計算をメモ化することを検討しよう

知ったこと

メジャモードとマイナーモード(項目44)

Rubyの世代別GCには、メジャーモードとマイナーモードの2つのモードがあります。 メジャーモードとは、全てのオブジェクトをGCの対象にします。一方、マイナーモードは、世代を考慮し若いオブジェクトのみをGCの対象にします。 ちなみに、GC.statメソッドからプログラムを起動してからのメジャーモードとマイナーモードの実行回数が取得出来ます。

:arrow_down: 実行回数の取得コードを示します。

# メジャーモードの実行回数
GC.stat.fetch(:major_gc_count) # => 6
# マイナーモードの実行回数
GC.stat.fetch(:minor_gc_count) # => 23

以上です :end: