手元のCygwin Ruby 1.8.3で[1, 2]と{1=>2}をそれぞれ10万要素ほど生成して調べたところ、だいだい [1, 2]: 1個60バイト {1=>2}: 1個140バイト ぐらい消費してるっぽいです。結構食いますね。 ちなみにArrayの方は、要素数を1増やすごとに4バイト増えます*1。Hashの方は未調査。 自作のRubyプログラムのメモリ消費が激しくて困ることが時々あるんですが、小さいArrayとかHashを使いまくってるのが原因かも。 上の結果からすると、メモリをケチるためには 要素数が少ないならHashの代わりにArrayを。(例: {1=>2, 3=>4}→[1, 2, 3, 4]) Arrayもできるだけ入れ子にしないで、フラットに。(例: [ [1, 2], [3, 4] ]→[1, 2, 3, 4]) ってところでしょうか。 *1:ポインタ1個が4バイトな