Linux (Fedora 15) 32 ビット システム (カーネル 3.6.5) で SBCL 1.0.51 を 1GB RAM と 256MB スワップ スペースで実行しています。
起動sbcl --dynamic-space-size 125
して、http (couchDB) サーバーに対して (drakma を使用して) ~ 10000 の http 要求を行う関数の呼び出しを開始し、返されたデータに対する操作の結果を標準出力にフォーマットするだけです。
各呼び出しの後、私は a を実行し(sb-ext:gc :full t)
、次に(room)
. 結果は伸びません。関数を何回実行しても(room)
、同じ使用済みスペースが報告されます (多少の浮き沈みはありますが、ほぼ同じ平均であり、増加しません)。
しかし、関数を呼び出すたびに、sbcl プロセスの VIRT と RES の量が増加し続けていることが top によって報告されます。だから私は次の質問があります:
top
報告されたメモリが増え続けているのに、増え(room)
ていないと言っているのはなぜですか? 私が考えることができる唯一のことは、ffiを介した漏れです。私は ffi で直接呼び出しているわけではありませんが、一部の drakma dep が C ガベージを解放するのを忘れている可能性があります。とにかく、これが説明になるかどうかはわかりません。それは何か他のものでしょうか?洞察はありますか?- どうして誉められないの
--dynamic-space-size
?