2011-08-24 6 views
9

¿Cómo puedo configurar el SBCL para que use más memoria que la predeterminada cuando lo comienzo utilizando "M-x slime" en Emacs?Cómo configurar SBCL para usar más RAM cuando se inicia a través de Emacs?

Por lo que he visto en línea, la respuesta parece ser llamar a SBCL, pasando el argumento "--dynamic-space-size < size in MB >". Como no llamo directamente a SBCL, no sé cómo pasarle los argumentos.

Estoy usando GNU Emacs 22.3.1 y SBCL 1.0.48 en Windows 7. Tampoco tengo experiencia en la configuración, por lo que la introducción de un principiante sería muy útil.

Respuesta

10

La forma habitual es establecer el valor de la variable inferior-lisp-program en el comando que desea ejecutar, incluidas las opciones que desee. No tienen un Emacs en mí en este momento, pero esto podría ser suficiente:

(setq inferior-lisp-program "sbcl --dynamic-space-size 1024") 
+0

He reemplazado mi anterior (setq inferior-lisp-program ...) anterior de mi archivo .emacs con su formulario de arriba, y funcionó. Sin embargo, cuando configuré cambié "1024" por "2048", SBCL se bloqueó, diciendo que el valor no era válido. ¿Conoces el rango para este valor? ¿Y por qué no puedo asignar 2 gigas si quiero? > _> – sadakatsu

+0

Parece que el límite de memoria del modo de usuario para un proceso de 32 bits en Windows 7 es de 2 GB http://msdn.microsoft.com/en-us/library/aa366778%28VS.85%29.aspx. El tamaño de espacio dinámico es solo una parte de la memoria que utiliza el sbcl (aunque probablemente sea la más grande), por lo que 2 GB de espacio de tamaño dinámico lo pondrían por encima del límite de 2 GB. O tal vez hay otra razón. –

10

estoy usando BABA 1: 20120420-2 en Debian squeeze. El answer por Kilian Foth no funciona a partir de esta versión. Escribí a limo-devel y me dijeron

Siempre y cuando no se esté usando limo-Lisp-implementaciones en sus
~/.emacs, estableciendo inferior-Lisp-programa debería funcionar.
Si está utilizando limo-Lisp-implementaciones, tiene que modificar
esta variable porque limo ignora inferior-Lisp-programa si
limo-Lisp implementaciones no es nula:

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

So, if one wants to check what the value of limo-Lisp-implementations` es

Sólo evaluar la variable slime-lisp-implementations, por ejemplo, con M-x
eval-expression. Si es nulo o no está enlazado, no se usará.

Como resultado, el valor de slime-lisp-implementations para mí fue

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

Así, pongo el siguiente en mi ~/.emacs

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

Con respecto a donde esto se estableció

Si quiere saber quién o qué conjuntos que es el valor que
ha, también para comprobar/etc/emacs emacs/site-lisp/o/usr/share// site-lisp/

En esta versión del limo, slime-lisp-implementations se encuentra en /usr/share/emacs/site-lisp/slime/slime.el.

Para la documentación de slime-lisp-implementations, ver el Slime Manual: 2.5.2 Multiple Lisps
o utilizar M-x describe-variable.

Todas las citas arriba son del tema setting heap size for SBCL for use with SLIME en slime-devel.

+0

Aunque es viejo, solo quería decir que este es el método que necesitaba usar hoy. El primer método no funcionó para mí. Gracias por publicarlo – DJM

+0

@DJM De nada. –

Cuestiones relacionadas