Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。4,205件3Rubyのスクリプトが一度でも巨大なメモリを確保してしまうと、ずっとメモリを保持し続けてしまう現象に悩んでいます。endendこんな感じのコードを書くと、実行結果は以下のようになります。KB時間を伸ばしたり、外からpsコマンドを実行したりしましたが、どうやってもRSSが減りません。Rubyオブジェクトに割り当てられたメモリは解放されているのに、せっかく開放したメモリをOSには返却してくれないようです。このプロセスに限れば確保したメモリを再利用できるからいいのですが、サーバー上には他のプロセスも動いてるわけでやはり使わなくなったメモリはOSに戻したいです。9:26ありがとうございます!環境によっては減るんですね。私の環境はCentOS6とMacでした。最近のRubyはGCまわりが色々変わってるらしいのでRubyバージョンの違いかもしれないですね。されにくい実装と記憶しています。した際に再割当するような実装も多く存在します。いうことで、一般的にはメモリの解放によっても占有メモリが減らない前提でプログラミングすることになろうかと思います。malloc/freeの実装の組み合わせを固定して開発する必要があるでしょう。個の銅バッジなるほど...実装次第なのですね。一般的にはメモリの解放によっても占有メモリが減らない前提でプログラミングすることになろうかと思います。いう考え方は知らなかったです。ありがとうございます。環境で1.9~2.6のRubyについて傾向を調べました。Rubyはrbenv-installでインストールしています。結論から言うと各バージョンともrssの減少は確認できました。増減パターンやメモリ量はbバージョンによってバラバラで傾向は掴めませんでした。1.9.3-p5511回目は増えて減る山を描くが、2回目以降は増えたままで、最後だけ少し減る。最終値は初期値よりは多い。2.0.0-p648山が4つになるパターンを描き、最終値は初期値とほぼ同じ。初期値は1.9.3-p551よりも多いが、最大値や最終値は1.9.3-p551よりも少ない。2.1.102.0.0-p648とほぼ同じ。2.2.102.1.10とほぼ同じだが、消費量が約1.1倍ぐらいに増加。2.3.81.9.3-p551とほぼ同じパターンで増減する。全体として、消費量は2.2.10の約1.7倍ぐらいに増加。2.4.52.3.8とほぼ同じだが、2.3.8の0.7倍ぐらいに減少。2.2.10よりはちょっと多い。2.5.32.4.5とほぼ同じだが、2.4.5の1.3倍ぐらいに増加。2.3.8よりはちょっと少ない。2.6.0山が4つになるパターンを描き、最終値は初期値とほぼ同じ。初期値は2.5.3の最終値と同じぐらいと一番大きい。最大値は2.5.3とほぼ同じ。--jit付きの場合も同じ波形になる。各バージョンのリリースノートを見るとGCやメモリ周りのパフォーマンス改善は度々行われており、mallocの取り方、freeの取り方なども変わっていると思われます。jemallocを有効にすると、また違った結果になるバージョンがありましたので、断片化のされやすさなども影響があると思います。いうことで、今回は単純に質問者さんの環境だとOS側がメモリを回収しなかっただけと思われます。大きな容量(数百MB単位)でも本当に全くメモリが解放されないのかを確認してみてください。増えたあとなかなか減らないので、メモリ増設するなり、スワップを積むなりしましょう。ビルドのライブラリとか)に加えて、ヒープとスタックを持ちます。増大する場合、だいたいはこのうちヒープが肥大化することによるものです。プログラムがヒープ上に保持するデータは、大きく分けて次の二つがあります。オブジェクト(RVALUE)を保持するためのページ。大きい配列の実体)それぞれのヒープ上のデータのメモリ確保の方法は、大体以下のようになっています。直接メモリをヒープ上で確保(malloc)する。ページ上にある)また、それぞれのメモリ解放のロジックは以下です。どのように振る舞うか、になります。返却するには、次の条件が必要になります。(メイン)ヒープは、その先頭のメモリが解放済みである場合のみに、先頭を切り詰める形でヒープを縮める処理が実行されうる。長く実行していると、最大利用メモリ量ぐらいまではメモリが確保されて、そのままなかなか小さくならない、といったような挙動になります。してくれるのを期待する、が現実解なのではなかろうか、と思っています。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。メモリを消費しているようです。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。