タグ

hugeとqiitaに関するishideoのブックマーク (1)

  • rubyで大きな配列をハッシュに変換する時のスタックの枯渇に注意 - Qiita

    fiberを使ったrubyプログラムでfiberに割り当てられたスタック領域を使い切ってプロセスが死ぬという問題が起こりました。 落ちた原因を調査していると、以下のようなコードが原因であることが分かりました。 big_array = [[:hoge 'fuga'], [:foo, 'bar'], ...] # 巨大な配列 Hash[*big_array.flatten] Hash.[]に引数として渡している配列が大きすぎるために、スタックを使い切ってしまっていたようです。 こちらの資料によると、スタックサイズは数十〜数百KBなので、それ以上のサイズの配列を引数に渡すとスタックが枯渇します。 http://www.atdot.net/~ko1/diary/edit_comment.cgi?mode=edit&year=2012&month=12&day=21 ruby 2.1以降ではArra

    rubyで大きな配列をハッシュに変換する時のスタックの枯渇に注意 - Qiita
  • 1