gpt4 book ai didi

memory - 在 Common Lisp (SBCL) 中处理和最小化内存使用

转载 作者:IT王子 更新时间:2023-10-28 23:31:15 28 4
gpt4 key购买 nike

我有一个内存不大的 VPS (256Mb),我正在尝试将其用于使用 SBCL+Hunchentoot 进行 Common Lisp 开发,以编写一些简单的网络应用程序。大量内存似乎在没有做任何特别复杂的事情的情况下被使用,并且在服务页面一段时间后它耗尽内存并且使用所有交换变得疯狂或者(如果没有交换)就死了。

所以我需要帮助:

  • 找出正在使用所有内存的内容(尤其是库或我)
  • 限制 SBCL 允许使用的内存量,以避免大量交换
  • 在内存耗尽时干净利落地处理事情,而不是崩溃(因为它是一个网络应用,我希望它继续运行并尝试清理)。

我认为前两个相当简单,但第三个甚至可能吗?人们如何在 Lisp 中处理内存不足或内存受限的情况?

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

最佳答案

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

要找出谁在使用内存,您可以在不同的时间调用 (room)(告诉正在使用多少内存的函数):在启动时,加载所有库后,然后在工作期间(当然,在房间之前调用 (sb-ext:gc :full t) 来测量尚未收集的垃圾)。

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

关于memory - 在 Common Lisp (SBCL) 中处理和最小化内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/708861/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com