Как настроить SBCL для использования большего объема оперативной памяти при запуске через Emacs?

Как я могу настроить SBCL так, чтобы он использовал больше памяти, чем по умолчанию, когда я запускаю его с помощью «M-x slime» в Emacs?

Из того, что я видел в Интернете, ответ, похоже, заключается в вызове SBCL с передачей аргумента «--dynamic-space-size ‹size in MB›». Поскольку я не вызываю SBCL напрямую, я не знаю, как передать ему аргументы.

Я использую GNU Emacs 22.3.1 и SBCL 1.0.48 в Windows 7. У меня также нет опыта настройки, поэтому введение новичка будет оценено.


person sadakatsu    schedule 24.08.2011    source источник


Ответы (2)


Обычный способ - установить значение переменной inferior-lisp-program для команды, которую вы хотите выполнить, включая любые параметры, которые вы хотите указать. У меня сейчас нет emacs, но этого может быть достаточно:

(setq inferior-lisp-program "sbcl --dynamic-space-size 1024")
person Kilian Foth    schedule 24.08.2011
comment
Я заменил свою предыдущую (setq inferior-lisp-program...) выше из моего файла .emacs вашей формой выше, и это сработало. Когда я установил, я изменил 1024 на 2048, однако SBCL разбился, заявив, что значение недействительно. Вы случайно не знаете диапазон этого значения? А почему я не могу выделить 2 гига, если захочу? ›_› - person sadakatsu; 25.08.2011
comment
Похоже, что предел памяти пользовательского режима для 32-разрядного процесса в Windows 7 составляет 2 ГБ msdn.microsoft.com/en-us/library/aa366778%28VS.85%29.aspx . Dynamic-space-size — это только часть памяти, которую использует sbcl (хотя, вероятно, самая большая), поэтому 2 ГБ динамического размера пространства превысят ограничение в 2 ГБ. Или, может быть, есть другая причина. - person Samuel Edwin Ward; 05.02.2012

Я использую SLIME 1:20120420-2 на Debian. ответ от Килиана Foth не работает в этой версии. Я написал slime-devel, и мне сказали

Пока вы не используете реализации slime-lisp в вашем
~/.emacs, установка программы-улучшения-lisp должна работать.
Если вы используете реализации slime-lisp, вам нужно изменить
эту переменную, потому что slime игнорирует программу-улучшения-lisp, если
slime-lisp-implementations не равно nil:

(setq slime-lisp-implementations                                                                                                                                                   
      '((sbcl ("sbcl" "--dynamic-space-size" "1024"))))

Итак, если кто-то хочет проверить, каково значение slime-lisp-implementations

Просто оцените переменную slime-lisp-implementations, например. с M-x
eval-выражением. Если он равен нулю или не привязан, он не будет использоваться.

Как оказалось, значение slime-lisp-implementations для меня было

(("sbcl" ("sbcl")) ("clisp" ("clisp")) ("ecl" ("ecl")) ("cmucl" ("cmucl")))   

Итак, я поместил следующее в свой ~/.emacs

(setq slime-lisp-implementations '(("sbcl" ("sbcl" "--dynamic-space-size" "1024")) ("clisp" ("clisp")) ("ecl" ("ecl")) ("cmucl" ("cmucl"))))

Что касается того, где это было установлено

Если вы хотите выяснить, кто или что устанавливает для него значение, которое оно
имеет, проверьте также /etc/emacs/site-lisp/ или /usr/share/emacs/site-lisp/.

В этой версии SLIME slime-lisp-implementations устанавливается в /usr/share/emacs/site-lisp/slime/slime.el.

Документацию по slime-lisp-implementations см. в Slime Manual: 2.5.2 Multiple Lisp
или используйте переменную описания Mx.

Все приведенные выше цитаты взяты из темы установка размера кучи для SBCL для использования со SLIME на слизи-девеле.

person Faheem Mitha    schedule 03.06.2012
comment
Хотя он старый, просто хотел сказать, что это метод, который мне нужно использовать сегодня. Первый способ мне не помог. Спасибо за публикацию. - person DJM; 31.10.2013