代码之家  ›  专栏  ›  技术社区  ›  Zelphir Kaltstahl

在Racket中指定内存限制

  •  3
  • Zelphir Kaltstahl  · 技术社区  · 9 年前

    在里面 DrRacket 我可以使用GUI设置内存限制。然而,我发现这个编辑器不太好,想用我选择的另一个编辑器。那么,如何指定内存限制呢?

    我能想到两种可能性,但都找不到:

    • racket (不是DrRacket GUI工具,而是命令行上的REPL)给它一些参数来指定限制
    2 回复  |  直到 9 年前
        1
  •  9
  •   Dmitry    9 年前

    看见 custodians .

    例如:

    #lang racket
    
    ;; Set limit
    (custodian-limit-memory
       (current-custodian) (* 2 1024 1024))
    
    (define x (make-bytes (* 4 1024 1024)))
    

    此代码的结果是“内存不足”。

        2
  •  6
  •   Ben Greenman    9 年前

    在代码开头,您可以设置模块的内存限制。 (docs)

    #lang racket/base
    (define MAX-BYTES 1000)
    (custodian-limit-memory (current-custodian) MAX-BYTES)
    
    ....
    

    我不知道一个简单的命令行解决方案,但您可以致电 custodian-limit-memory 在您的 racketrc 文件设置REPL的限制。

    racket/sandbox 尤其地 call-with-limits .