在DrRacket
中,我可以使用GUI设置内存限制。但是,我发现编辑器不太好,并且想要使用我选择的另一个编辑器。但是,如何指定内存限制?
我可以想到两种可能性,但无法找到关于其中任何一种的任何可能性:
racket
(不是DrRacket GUI工具,但命令行上的REPL)给它一些参数来指定限制答案 0 :(得分:8)
例如:
#lang racket
;; Set limit
(custodian-limit-memory
(current-custodian) (* 2 1024 1024))
(define x (make-bytes (* 4 1024 1024)))
此代码的结果是“内存不足”。
答案 1 :(得分:6)
在代码的开头,您可以为模块设置内存限制。 (docs)
#lang racket/base
(define MAX-BYTES 1000)
(custodian-limit-memory (current-custodian) MAX-BYTES)
....
我不知道一个简单的命令行解决方案,但您可以在racketrc文件中调用custodian-limit-memory
来设置REPL的限制。
另请参阅racket/sandbox,尤其是call-with-limits
。