在Racket中指定内存限制

时间:2016-08-22 13:01:30

标签: memory racket limit

DrRacket中,我可以使用GUI设置内存限制。但是,我发现编辑器不太好,并且想要使用我选择的另一个编辑器。但是,如何指定内存限制?

我可以想到两种可能性,但无法找到关于其中任何一种的任何可能性:

  • 在代码调用开始时调用一些函数来设置内存限制
  • 调用racket(不是DrRacket GUI工具,但命令行上的REPL)给它一些参数来指定限制

2 个答案:

答案 0 :(得分:8)

custodians

例如:

#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