From: Shin-ichro Hara Date: 1998-08-31T13:34:42+09:00 Subject: [ruby-list:9356] Saving Memory(Re: shttpsrv-1.0 & grepsvr-1.1) 原です。 In message "[ruby-list:9354] Re: shttpsrv-1.0 & grepsvr-1.1" on 98/08/31, Yukihiro Matsumoto writes: | |まつもと ゆきひろです ||4日!! こっちの DX4 マシンでも 1 日だったのに。無限ループには ||ならないので、そのうち必ず結果はでると思います。(^^; | |いや,そのままだと1分で止まったんですが,それだと現象が違っ |たんですよね(reallocが2回失敗した).んで,swapを大量に追加し |たのですが,それがいけなかった(?)みたい.今24087辺りを処理 |してます. 最初の数万の数字のソートでこけることもあるようです。しかし こちらの比較的大きな機械ではそこは余裕でクリアして、その後 でいろいろな現象が。 |んで,結局はメモリ(+swap)領域の不足が根本原因のような気がし |ます(それによるmallocの誤動作も疑ってます).まだ,断言できま |せんが,もしそうならもうちょっとメモリを使わないプログラムに |することが逃げ道かも知れません. 基本的には少しずつデータを必要な部分だけアペンドして行く作りに なっているんですが、何かのきっかけでデータが壊れて最初から作り 直しになったので、こんなメモリ大食い状況になっています。いずれ にしてももうひと工夫ないとまずいと思っています。 ところで、メモリの節約について質問なのですが、Hash に大量なデ ータを記録する事があるとして、それを DBM に変更するとメモリの 節約になりますかね。つまり fbm = DBM.open("data") while true ... dbm[foo] = bar としたとき、実際に "data" に情報を書き込むのは fbm.close した 時ですか?それともあるのバッファがいっぱいになった時でしょうか。