当前位置:  开发笔记 > 编程语言 > 正文

应对Common Lisp(SBCL)中的内存使用并将其最小化

如何解决《应对CommonLisp(SBCL)中的内存使用并将其最小化》经验,为你挑选了1个好方法。

我有一个没有太多内存(256Mb)的VPS,我试图使用SBCL + Hunchentoot进行Common Lisp开发来编写一些简单的web应用程序.大量的内存似乎在没有做任何特别复杂的事情的情况下被使用,并且在服务页面一段时间后,内存耗尽并且使用所有交换或者(如果没有交换)就会死掉.

所以我需要帮助:

找出使用所有内存的内容(如果它是库或我,尤其是)

限制SBCL允许使用的内存量,以避免大量的交换

当内存耗尽时,处理干净的东西,而不是崩溃(因为它是一个web-app,我希望它继续并尝试清理).

我假设前两个是相当简单的,但第三个甚至可能吗?人们如何处理Lisp中的内存不足或受限制的内存条件?

(另外,我注意到64位SBCL似乎使​​用的内存是32位的两倍.这是预期的吗?我可以运行32位版本,如果它会节省大量内存)



1> dmitry_vk..:

要限制SBCL的内存使用量,请使用--dynamic-space-size选项(例如,sbcl --dynamic-space-size 128将内存使用量限制为128M).

要找出谁在使用内存,你可以(room)在不同的时间调用(这个函数说明正在使用多少内存):在启动时,在加载所有库之后,然后在工作期间(cource,(sb-ext:gc :full t)在空间之前调用不测量内存)尚未收集的垃圾).

此外,可以使用SBCL Profiler来测量内存分配.


SBCL手册中有关于剖析器的描述,网址为http://www.sbcl.org/manual/Det​​erministic-Profiler.html
推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有