【问题标题】:Specify memory limit in Racket在 Racket 中指定内存限制
【发布时间】:2016-08-22 13:01:29
【问题描述】:

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

我可以想到两种可能性,但找不到任何关于这两种可能性的信息:

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

【问题讨论】:

    标签: memory racket limit


    【解决方案1】:

    custodians

    例如:

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

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

    【讨论】:

      【解决方案2】:

      在代码的开头,您可以为模块设置内存限制。 (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

      【讨论】:

      • 两个答案都很好,但是,我会接受这个,因为我喜欢最大字节数的定义。非常易读。
      猜你喜欢
      • 2011-12-22
      • 2016-01-24
      • 1970-01-01
      • 2012-06-04
      • 1970-01-01
      • 2017-07-09
      • 1970-01-01
      • 1970-01-01
      • 2020-11-27
      相关资源
      最近更新 更多