primer lugar, es importante tener en cuenta que los dos son muy diferentes en que gc
, no se elimina ningún variables que usted todavía está using- sólo se libera la memoria de los que ya no tiene acceso a (si eliminado utilizando rm()
o, por ejemplo, creado en una función que ha vuelto desde entonces). Ejecutar gc()
nunca hará que pierda variables.
La cuestión de si debe llamar al gc()
después de llamar al rm()
, sin embargo, es una buena opción. El documentation para gc amablemente notas:
Una llamada de gc hace que se realice una recolección de basura. Esto también se llevará a cabo automáticamente sin la intervención del usuario, y el propósito principal de llamar a gc es para el informe sobre el uso de la memoria.
Sin embargo, puede ser útil llamar a gc después de eliminar un objeto grande, ya que esto puede hacer que R devuelva la memoria al sistema operativo.
Así que la respuesta es que puede ser bueno para llamar gc()
(y, por lo menos, no puede hacer daño), a pesar de que es probable que se activa de todos modos (si no de inmediato, a continuación, en breve).
Gracias por su respuesta. En términos generales, ¿se considera que la recolección automática de basura R es buena? (tan robusto como el de Java, por ejemplo) – RockScience
Esa es una pregunta difícil de responder, no estoy seguro. [Esta pregunta] (http://stackoverflow.com/questions/1467201/forcing-garbage-collection-to-run-in-r-with-the-gc-command) es útil. –
Generalmente no debería tener que llamar a gc, y es poco probable que haga una gran diferencia si lo hace. – hadley