You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
Rubyのスクリプトが一度でも巨大なメモリを確保してしまうと、ずっとメモリを保持し続けてしまう現象に悩んでいます。 require 'objspace' array = [] (1..20).each_with_index do |i| array << 'a'*1000000 puts "memsize: #{ObjectSpace.memsize_of_all / 1024} KB, rss: #{`ps -o rss= #{Process.pid}`.chomp} KB" if i % 5 == 0 array = [] GC.start puts "memsize: #{ObjectSpace.memsize_of_all / 1024} KB, rss: #{`ps -o rss= #{Process.pid}`.chomp} KB" end end こんな感じのコードを書くと、
この前こんな記事書きました。yoskmr.hatenablog.com オブジェクトのメモリの使用量を調べるモジュールありますよという記事です。この時に謎のままにしていた以下のコードの2行目の「GC::INTERNAL_CONSTANTS[:RVALUE_SIZE]」すが、調べたら正体がわかったので書きます。 結論から言うと、「ヒープ領域に格納したRubyオブジェクトのポインタのメモリサイズ」です。では説明していきます。 require 'objspace' rvalue_size = GC::INTERNAL_CONSTANTS[:RVALUE_SIZE] Rubyのオブジェクトはヒープ領域で値型変数にポインタとして格納される ※値型=VALUE Type、これともう一つ、参照型=Reference Typeてのがあります。 詳しくはこちら→ 値型と参照型 - C# によるプログラミング
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く