如何限制Haskell线程的内存使用量

Joe*_*ams 22 memory haskell ghc

在使用GHC编译的Haskell程序中,是否可以以编程方式防止过多的内存使用?也就是说,让它在内存使用量达到指定限制时通知程序,最好指示有问题的线程.

例如,假设我想编写一个服务器,托管脚本语言解释器,用户可以连接到该服务器.这是Turing-complete,所以程序理论上可以使用无限的内存或时间.假设每个客户端都使用单独的线程处理.如果客户端写入一个非常快速消耗内存的无限循环,我想确保该线程在被异常警告之前消耗的内存不超过1 MB.发生这种情况时,我不希望其他用户受到影响.

这可能是使用单独的进程ulimit,但是:

  • 我宁愿将其保留在一个程序中,以避免进程间通信的复杂性.

  • 我需要支持Linux和Windows,所以如果可能的话,我宁愿保持与平台无关.

sin*_*law 2

可能不完全是你想要的。但是,正如此处记录的那样,您有一个 ghc 编译选项: -Ksize更新:哎呀,抱歉, -K 用于堆栈溢出。不过,您仍然可以检查该链接。