In message <200103131030.TAA18969 / sharui.nakada.kanuma.tochigi.jp>
nobu.nakada / nifty.ne.jp writes:

> なかだです。
> 
> At Tue, 13 Mar 2001 17:40:20 +0900,
> OHARA Shigeki <os / iij.ad.jp> wrote:
> > Ruby で daemon を作っていると、
> > GC.start を使ってもプロセスサイズが小さくならないことがよくあって、
> > Ruby が悪いのか GS.start の使い方が悪いのかと
> > 今までずっと悩んでいたのですが、「こういうもの」だったのですね……。
> 
>   stdio の中で malloc してたりすると、その前に a に割り当てた
> 領域が開放されても後から確保された領域に邪魔されて OS に返却で
> きなくなってしまうことは考えられます。アプリケーション側という
> よりも、システム/ライブラリが「こういうもの」だというべきでしょ
> う。Ruby に限った話ではないはずです。

最近 *も* 同じ話が続いている :-) fj.comp.lang.c での議論の紛糾する前の
総論 :-P などが参考になるでしょう.

要するにプログラムの実行途中で開放したつもりのメモリがシステムに返るか
どうかはシステムやライブラリの作りにより,一般的には返却されると期待す
るべきではない,ということです.

要求待ちをする部分や一本化したい部分と実際の処理とを別のプロセスに分離
するというのが採用できるならそうするのが簡単ですね.それがだめなら極力
余分なオブジェクトの生成を避けるというような工夫が必要になるのでしょう.


-- 
柳川和久 @ 東大阪市 . 大阪府                                 March 13, 2001
明日は明日の桶屋が儲かる