我在Linux(Fedora 15)32位系统(内核3.6.5)上运行SBCL 1.0.51,具有1GB Ram和256MB交换空间。
我启动sbcl --dynamic-space-size 125
并开始调用一个函数,该函数将~10000个http请求(使用drakma)发送到http(couchDB)服务器,我只是将格式化为标准输出的操作结果返回数据。
每次通话结束后,我都会(sb-ext:gc :full t)
,然后(room)
。结果没有增长。无论我运行多少次函数,(room)
报告相同的已用空间(有一些起伏,但大约相同的平均值不会增长)。
但是:每次调用该函数后,top都会报告sbcl进程的VIRT和RES数量不断增长,甚至超过我告诉sbcl要求的125MB空间。所以我有以下问题:
top
报告的内存不断增长,而(room)
表示不会增长?我唯一能想到的是通过ffi泄漏。我不是直接用ffi调用,但也许有些drakma dep会忘记释放它的C垃圾。无论如何,我不知道这是否可能是一个解释。它可能是别的吗?任何见解?--dynamic-space-size
不尊重?