记忆中的一个班级有多大?

时间:2010-09-13 17:08:01

标签: lisp common-lisp sbcl clisp

如何确定defclass对象在Common Lisp中有多少字节?

2 个答案:

答案 0 :(得分:3)

你不能在便携式Common Lisp中这样做。

有用的可能是函数ROOMROOM打印内存统计信息,使用参数T打印出详细信息。因此,您可能会在某些实例创建之前和之后看到差异。实现可能具有特定功能,但您需要使用手册或支持邮件列表进行检查。

答案 1 :(得分:3)

除了Rainer的答案,以下是CLISP的答案:macro EXT:TIMES

(defclass c () ((x) (y) (z)))
(ext:times (make-instance 'c))
                                   Permanent            Temporary
Class                         instances   bytes    instances   bytes
-----                         --------- ---------  --------- ---------
C                                     1        48          0         0
-----                         --------- ---------  --------- ---------
Total                                 1        48          0         0
Real time: 1.4E-5 sec.
Run time: 0.0 sec.
Space: 48 Bytes
#<C #x000333CF2AA0>

注意:如果您在提示时评估defclass,则系统不会对其进行评估,因此times除了c之外还会报告一些漏洞。