Aumentar (o disminuir) la memoria disponible para los procesos R

Respuestas:

64

De:

http://gking.harvard.edu/zelig/docs/How_do_I2.html ( espejo )

Los usuarios de Windows pueden recibir el error de que R se ha quedado sin memoria.

Si ya tiene R instalado y posteriormente instala más RAM, es posible que deba reinstalar R para aprovechar la capacidad adicional.

También puede establecer la cantidad de memoria disponible manualmente. Cierre R, luego haga clic derecho en el ícono de su programa R (el ícono en su escritorio o en su directorio de programas). Seleccione `` Propiedades '' y luego seleccione la pestaña `` Acceso directo ''. Busque el campo `` Destino '' y después de las comillas de cierre alrededor de la ubicación del ejecutable R, agregue

--max-mem-size = 500M

como se muestra en la figura a continuación. Puede aumentar este valor hasta 2 GB o la cantidad máxima de RAM física que haya instalado.

Si obtiene el error de que R no puede asignar un vector de longitud x, cierre R y agregue la siguiente línea al campo `` Destino '':

--max-vsize = 500M

o según corresponda. Siempre puede verificar la cantidad de memoria que R tiene disponible escribiendo en el indicador R

memory.limit()

que le da la cantidad de memoria disponible en MB. En las versiones anteriores de R que tenía que utilizar: round(memory.limit()/2^20, 2).

BobbyShaftoe
fuente
77
Tenga en cuenta que en Windows de 32 bits, R solo puede usar hasta 3Gb de RAM, independientemente de cuánto haya instalado. Hay una versión de 64 bits de R para Windows disponible en REvolution Computing, que se ejecuta en Windows de 64 bits y puede usar toda la RAM disponible: revolution-computing.com/products/revolution-enterprise.php
David Smith
66
Solo dos notas: (i) memory.limit () solo funciona en Windows y (ii) el comando que devolverá la respuesta correcta es round (memory.limit (), 2), al menos en mi versión de R ( 2.8.1).
medriscoll
31
¿Alguna sugerencia sobre cómo obtener información similar a la de memory.limit () trabajando en Linux?
exl
55
La página web ya no existe. Es difícil para mí seguir esto sin las imágenes. No veo una pestaña "Acceso directo", por ejemplo. Además, ¿puedes usar esto para disminuir la memoria máxima?
blakeoft
66
Entonces, ¿qué pasa con los usuarios de Mac? ¿Podemos hacer algo al respecto?
Alfredo Lozano
51

Uso memory.limit(). Puede aumentar el valor predeterminado con este comando memory.limit(size=2500), donde el tamaño está en MB. Debe utilizar 64 bits para aprovechar esto realmente.

Otra sugerencia es usar objetos eficientes en memoria siempre que sea posible: por ejemplo, use una matriz en lugar de un data.frame.

Shane
fuente
3
Realmente no entiendo cómo funciona esto. Me encontré con este problema de límite de memoria y recibí el error "Asignación total alcanzada de 8182Mb". Estoy usando 64 bits con 8 GB de RAM, así que parecía ser SOL. Sin embargo, para shiggles, configuré memory.limit (size = 50000) ... ¡Y FUNCIONÓ! ¿¿¿Pero por qué???
theforestecologist
2
Sé que esto tiene 7 años, pero estoy tratando de reducir la cantidad de RAM que R puede usar, pero cada vez que intento reducir el valor recibo este mensaje (tengo 12 gb de RAM en una máquina Windows de 64 bits) . Mensaje de advertencia: In memory.limit (4095): no puede disminuir el límite de memoria: ignorado
hellter
7

Microsoft Windows acepta cualquier solicitud de memoria de los procesos si se pudiera hacer.

No hay límite para la memoria que se puede proporcionar a un proceso, excepto el Tamaño de memoria virtual.

El tamaño de la memoria virtual es de 4 GB en sistemas de 32 bits para cualquier proceso, sin importar cuántas aplicaciones esté ejecutando. Cualquier proceso puede asignar hasta 4 GB de memoria en sistemas de 32 bits.

En la práctica, Windows asigna automáticamente algunas partes de la memoria asignada desde la RAM o el archivo de página, según las solicitudes de procesos y el mecanismo del archivo de paginación.

Pero otro límite es el tamaño del archivo de paginación. Si tiene un archivo de paginación pequeño, no puede asignar memorias grandes. Puede aumentar el tamaño del archivo de paginación según Microsoft para tener más espacio de memoria.

Isaac
fuente
5
  1. Compra más ram
  2. Cambie a un sistema operativo de 64 bits. Combinar con el punto 1.
Dirk Eddelbuettel
fuente
23
Comprar más ram (y cambiar a otro sistema operativo) no es una solución adecuada en general.
om-nom-nom
17
Claro que sí, al igual que trabajar en problemas más pequeños que son apropiados para el problema en cuestión. Desear una solución por lo general tampoco te da una.
Dirk Eddelbuettel
2

Para aumentar la cantidad de memoria asignada a R, puede usar memory.limit

memory.limit(size = ...)

O

memory.size(max = ...)

Sobre los argumentos

  • tamaño - numérico Si NA informa el límite de memoria, solicite un nuevo límite, en Mb. Solo se permiten valores de hasta 4095 en las compilaciones R de 32 bits, pero consulte 'Detalles'.
  • max - lógico. Si es VERDADERO, se informa la cantidad máxima de memoria obtenida del sistema operativo, si es FALSO la cantidad actualmente en uso, si NA es el límite de memoria.
Tiago Martins Peres 李大仁
fuente