2016-08-22 2 views
3

В DrRacket Я могу установить ограничение памяти с помощью графического интерфейса. Однако я считаю, что редактор не очень хорош и хочет использовать другой редактор по своему выбору. Но как я могу указать ограничение памяти?Укажите ограничение памяти в Racket

я могу думать о двух возможностях, но не смог найти ничего о любом из них:

  • в начале вызова кода некоторой функции, чтобы установить предел памяти
  • при вызове racket (не DrRacket GUI, но в командной строке REPL) дайте ему несколько аргументов, чтобы указать предел

ответ

6

В начале кода вы можете установить ограничение памяти для модуля. (docs)

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

.... 

Я не знаю, простое решение командной строки, но вы можете вызвать custodian-limit-memory в файле racketrc, чтобы установить предел для РЕПЛ.

См. Также racket/sandbox, особенно call-with-limits.

+0

Оба ответа велики, однако я соглашусь с этим, потому что мне нравится определение максимальных байтов. Очень читаемо. – Zelphir

8

См. custodians.

Например:

#lang racket 

;; Set limit 
(custodian-limit-memory 
    (current-custodian) (* 2 1024 1024)) 

(define x (make-bytes (* 4 1024 1024))) 

Результат этого кода 'из памяти'.

Смежные вопросы