我需要从Common Lisp程序中找出当前使用的内存量。
我理解没有可移植的方法(标准函数room
以文本形式将信息打印到标准输出而不是将其作为值返回),但sb-kernel:dynamic-usage
在SBCL中有效
其他Common Lisp实现中的等价物是什么?或者是否有另一种解决这个问题的方法我应该看一下?
答案 0 :(得分:10)
它可能对你没什么帮助,但无论如何:
您可以捕获(房间)的输出并解析它。
(with-output-to-string (*standard-output*)
(room))
Above返回一个输出为ROOM的字符串。
此外,通过外部调用标准unix命令(如果您使用的是Unix)来请求进程的内存大小可能会有所帮助。
答案 1 :(得分:4)
对于几乎每个实现都支持的东西,但不是以相同的方式(因为它不在CL中),一种常见的方法是创建一个名为trivial-的库。
如果您启动了像trivial-memory
这样的包,并提供了第一个实现,我相信我们可以让所有人在短时间内为自己喜欢的Lisp编译器贡献这个函数。 : - )