【发布时间】:2016-08-22 13:01:29
【问题描述】:
在DrRacket 中,我可以使用 GUI 设置内存限制。但是,我发现编辑器不太好,想使用我选择的另一个编辑器。但是那我该如何指定内存限制呢?
我可以想到两种可能性,但找不到任何关于这两种可能性的信息:
- 在代码开头调用一些函数来设置内存限制
- 在调用
racket(不是 DrRacket GUI 工具,而是命令行上的 REPL)时,给它一些参数来指定限制
【问题讨论】:
在DrRacket 中,我可以使用 GUI 设置内存限制。但是,我发现编辑器不太好,想使用我选择的另一个编辑器。但是那我该如何指定内存限制呢?
我可以想到两种可能性,但找不到任何关于这两种可能性的信息:
racket(不是 DrRacket GUI 工具,而是命令行上的 REPL)时,给它一些参数来指定限制【问题讨论】:
例如:
#lang racket
;; Set limit
(custodian-limit-memory
(current-custodian) (* 2 1024 1024))
(define x (make-bytes (* 4 1024 1024)))
此代码的结果是“内存不足”。
【讨论】:
在代码的开头,您可以为模块设置内存限制。 (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。
【讨论】: