日々精進

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

rubyのコールスタックサイズについて

前回のコードを書いていてコールスタックの最大サイズが気になったので調べてみました。
検索しても出てこなかったので自分で以下のコードを実行してみました。

$i = 0

def test()
  puts $i
  $i += 1
  test()
end

test()

結果、「21628」まで出力したところで「stack level too deep (SystemStackError)」を出して止まりました。
意外とサイズ大きいですね−。
コールスタックを管理しているのはランタイムライブラリだろうから、実行環境によって違うんでしょうが、1000ぐらいの深さならオーバーフローを気にしなくてもいい気がしてきました。
それにしても中途半端な数字でプログラムが止まったことが気になる。。