Lisp中当前的内存使用情况

时间:2010-11-16 13:31:00

标签: lisp memory-management common-lisp

我需要从Common Lisp程序中找出当前使用的内存量。

我理解没有可移植的方法(标准函数room以文本形式将信息打印到标准输出而不是将其作为值返回),但sb-kernel:dynamic-usage在SBCL中有效

其他Common Lisp实现中的等价物是什么?或者是否有另一种解决这个问题的方法我应该看一下?

2 个答案:

答案 0 :(得分:10)

它可能对你没什么帮助,但无论如何:

您可以捕获(房间)的输出并解析它。

(with-output-to-string (*standard-output*)
  (room))

Above返回一个输出为ROOM的字符串。

此外,通过外部调用标准unix命令(如果您使用的是Unix)来请求进程的内存大小可能会有所帮助。

答案 1 :(得分:4)

对于几乎每个实现都支持的东西,但不是以相同的方式(因为它不在CL中),一种常见的方法是创建一个名为trivial-的库。

如果您启动了像trivial-memory这样的包,并提供了第一个实现,我相信我们可以让所有人在短时间内为自己喜欢的Lisp编译器贡献这个函数。 : - )