error cannot allocate memory-management r

memory management - cannot - Uso de la memoria en R



cannot allocate vector size r (3)

En Windows, la técnica que describes funciona para mí. Prueba el siguiente ejemplo.

Abra el Administrador de tareas de Windows (CTRL + MAYÚS + ESC).

Inicia RGui. El uso de la memoria RGui.exe es 27 460K.

Tipo

gcinfo(TRUE) x <- rnorm(1e8)

El uso de la memoria RGui.exe ahora es 811 100K.

Escriba rm("x") . El uso de la memoria RGui.exe sigue siendo 811 100K.

Escriba gc() . El uso de la memoria RGui.exe ahora es 28 332K.

Tenga en cuenta que se debe llamar automáticamente a gc si ha eliminado objetos de su área de trabajo, y luego intenta asignar más memoria a las nuevas variables.

Después de crear objetos grandes y quedarse sin memoria RAM, intentaré eliminar los objetos en mi entorno actual usando

rm(list=ls())

Cuando reviso mi uso de RAM, nada ha cambiado. Incluso después de llamar a gc() nada ha cambiado. Solo puedo reponer mi memoria RAM saliendo de R.

¿Alguien tiene consejos para tratar con objetos intensivos en memoria dentro de R?


La memoria para objetos eliminados no se libera inmediatamente. R usa una técnica llamada "recolección de basura" para reclamar memoria para objetos eliminados. Periódicamente, recorre la lista de objetos accesibles (básicamente, aquellos que tienen nombres y no han sido eliminados y, por lo tanto, puede acceder el usuario), y los "etiqueta" para su retención. La memoria para cualquier objeto no etiquetado se devuelve al sistema operativo después del barrido de recogida de basura.

La recolección de basura ocurre automáticamente, y usted no tiene ningún control directo sobre este proceso. Pero puede forzar un barrido llamando al comando gc () desde la línea de comando.

Incluso entonces, en algunos sistemas operativos, la recolección de basura puede no reclamar la memoria (según lo informado por el sistema operativo). Las versiones anteriores de Windows, por ejemplo, podrían aumentar, pero no disminuir, la huella de memoria de R. La recolección de basura solo haría espacio para nuevos objetos en el futuro, pero no reduciría el uso de memoria de R.


Mi impresión es que se gc() múltiples formas de gc() antes de que los informes R fallaran la asignación de memoria. No estoy al tanto de una solución para esto en este momento, aparte de reiniciar R como sugieres. Parece que R no defragmenta la memoria.