我有一个没有太多内存 (256Mb) 的 VPS,我正在尝试使用 SBCL+Hunchentoot 进行 Common Lisp 开发,以编写一些简单的网络应用程序。大量内存似乎在没有做任何特别复杂的事情的情况下被使用,并且在服务页面一段时间后它耗尽内存并且使用所有交换变得疯狂或者(如果没有交换)就死了。
所以我需要帮助:
- 找出正在使用所有内存的内容(尤其是库或我)
- 限制 SBCL 允许使用的内存量,以避免大量交换
- 当内存用完时干净地处理事情,而不是崩溃(因为它是一个网络应用程序,我希望它继续运行并尝试清理)。
我认为前两个相当简单,但第三个甚至可能吗?人们如何在 Lisp 中处理内存不足或内存受限的情况?
(另外,我注意到 64 位 SBCL 使用的内存似乎是 32 位的两倍。这是预期的吗?如果可以节省大量内存,我可以运行 32 位版本)