SBCL使用顶部和(房间)的内存报告不同

时间:2012-11-30 15:46:20

标签: memory lisp common-lisp sbcl

我在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空间。所以我有以下问题:

  1. 为什么top报告的内存不断增长,而(room)表示不会增长?我唯一能想到的是通过ffi泄漏。我不是直接用ffi调用,但也许有些drakma dep会忘记释放它的C垃圾。无论如何,我不知道这是否可能是一个解释。它可能是别的吗?任何见解?
  2. 为什么--dynamic-space-size不尊重?

0 个答案:

没有答案