liberar - Cómo limpiar la memoria R(sin la necesidad de reiniciar mi PC)?
liberar memoria ram windows 10 sin programas (6)
Me pareció útil ir a mi carpeta "tmp" y eliminar todos los archivos de sesión pendientes. Esto generalmente libera cualquier memoria que parece estar "atascada".
Estoy ejecutando mi código en R (en Windows) que implica una gran cantidad de datos en la memoria. Traté de usar rm(list=ls())
para limpiar la memoria, pero parece que la memoria todavía está ocupada y no puedo volver a ejecutar mi código. Traté de cerrar la R y reiniciar R nuevamente, pero es lo mismo, parece que la memoria todavía está ocupada, ya que cuando ejecuto los códigos, dice que no puede asignar memoria (pero podría hacerlo la primera vez). La memoria parece solo limpiada después de reiniciar mi PC.
¿Hay alguna forma de limpiar la memoria para que pueda volver a ejecutar mi código sin reiniciar mi PC todo el tiempo?
Quizás puedas intentar usar la función gc()
. Una llamada de gc()
hace que se realice una recolección de basura. Puede ser útil llamar a gc()
después de que se haya eliminado un objeto grande, ya que esto puede hacer que R devuelva la memoria al sistema operativo. gc()
también devuelve un resumen de la memoria ocu.
Tuve el mismo problema con R. Excavo un poco y vengo con una solución, que necesitamos reiniciar la sesión R para limpiar completamente la memoria / RAM. Para esto, puede usar un código simple después de eliminar todo de su espacio de trabajo. El código es el siguiente :
rm(list = ls())
.rs.restartR()
Un ejemplo en Linux (Fedora 16) muestra que la memoria se libera cuando R se cierra:
$ free -m
total used free shared buffers cached
Mem: 3829 2854 974 0 344 1440
-/+ buffers/cache: 1069 2759
Swap: 4095 85 4010
2854 megabytes se utiliza. A continuación, abro una sesión R y creo una gran matriz de números aleatorios:
m = matrix(runif(10e7), 10000, 1000)
cuando se crea la matriz, se usan 3714 MB:
$ free -m
total used free shared buffers cached
Mem: 3829 3714 115 0 344 1442
-/+ buffers/cache: 1927 1902
Swap: 4095 85 4010
Después de cerrar la sesión R, recuperé la memoria que usé (2856 MB gratis):
$ free -m
total used free shared buffers cached
Mem: 3829 2856 972 0 344 1442
-/+ buffers/cache: 1069 2759
Swap: 4095 85 4010
Por supuesto, usa Windows, pero podría repetir este ejercicio en Windows e informar cómo se desarrolla la memoria disponible antes y después de crear este gran conjunto de datos en R.
Use la función ls()
para ver qué objetos R están ocupando espacio. use rm ("objectName") para borrar los objetos de la memoria R que ya no es necesaria. Ver this también
memory.size(max=T) # gives the amount of memory obtained by the OS
[1] 1800
memory.size(max=F) # gives the amount of memory being used
[1] 261.17
Usando el ejemplo de Pablo,
m = matrix(runif(10e7), 10000, 1000)
Ahora
memory.size(max=F)
[1] 1024.18
Para limpiar la memoria
gc()
memory.size(max=F)
[1] 184.86
En otras palabras, la memoria ahora debería estar clara nuevamente. Si buclea un código, es una buena idea agregar un gc()
como la última línea de su ciclo, para que la memoria se borre antes de comenzar la siguiente iteración.