【发布时间】:2012-12-08 19:07:56
【问题描述】:
我的应用程序将给定的数据转换为树表示,它使用了太多的内存。因为它设法在崩溃之前将大约 200-300MB 的内存变成大约 3GB。
我现在想弄清楚泄漏在哪里,是程序的哪个部分导致的。
因此,我现在想知道在 common-lisp 中使用 sbcl 进行内存分析最常见和最有效的技术是什么?
我已经看过(room) 和(time),但是它的输出很冗长,我需要的只是一个包装器,上面写着“执行后整体内存使用量为+1000Byte”,这样就可以了我只想知道内存在哪里使用。另一个标准是它必须“即时”运行,因为没有剩余 RAM,应用程序很可能会崩溃。
看起来像这样:
(dotimes (i 4)
(profiler-wrapper :messg "After execution memory ~a~%" (execute-me i) ))
After execution memory +100Mb
After execution memory +100Mb
After execution memory +100Mb
After execution memory +100Mb
NIL
【问题讨论】:
标签: common-lisp sbcl