[R-es] gestión de la memoria en R? (o Eclipse)

Carlos J. Gil Bellosta cgb en datanalytics.com
Jue Mar 3 12:30:39 CET 2011


Hola, ¿qué tal?

Es típico que al procesar secuencialmente ficheros, el rendimiento de
R vaya degradándose por problemas de fragmentación de memoria. El
"garbage collector" de R no es particularmente fino y viene bien
ayudarle manualmente a realizar su labor.

¿Cómo? Cuando hayas acabado de utilizar objetos que tienes en memoria
(por ejemplo, una tabla que cargas de un fichero, etc.), sobre todo
los grandes, bórralos explícitamente con rm() y llama al "garbage
collector" ( gc() ) inmediatamente. Cuanto más tardes a borrar y
liberar espacio, mayor será la probabilidad de que no puedas restaurar
la memoria a un estado lo más parecido posible al original.

Un saludo,

Carlos J. Gil Bellosta
http://www.datanalytics.com


El día 3 de marzo de 2011 11:36, Xavier de Pedro
<xavier.depedro en ub.edu> escribió:
> Gracias Carlos!
>
> Lo del close() ya lo tenía presente y todos los archivos que abro los
> cierro luego con close (aunque me aseguraré que con los cambios que hice
> en las últimas semanas no me quedasé algun cabo suelto en este campo).
>
> Lo del Rprofmem() no tenía ni idea, así que ya sé por donde seguir
> tirando del hilo... :-)
>
> Saludos y gracias de nuevo.
>
> Xavi
>
>
> On 02/03/11 12:37, Carlos Ortega wrote:
>> Hola,
>>
>> Para trazar el consumo de memoria puedes utilizar la función
>> "Rprofmem()" de la librería "utils".
>>
>> También miraría si en el proceso batch de los múltiples ficheros que
>> consultas, se cierras o no las conexiones una vez hecha la consulta.
>> Mira para esto "close()".
>>
>> Saludos,
>> Carlos Ortega
>> www.qualityexcellence.es <http://www.qualityexcellence.es>
>>
>> 2011/3/2 Xavier de Pedro <xavier.depedro en ub.edu
>> <mailto:xavier.depedro en ub.edu>>
>>
>>     Hola:
>>
>>     Por lo visto tengo un problema de gestión de la memoria en R con
>>     un programa que trabaja con archivos por lotes (no sé si se dice
>>     así en castellano, en "batch" mode) para elaborar unos informes, etc.
>>
>>     En el conjunto de datos de un año concreto, tengo 197 archivos xml
>>     que procesar, de entre 50 y 200Kb la mayoría, con un total de 28
>>     Mb en total. Trabajo con Eclipse como IDE (lo digo por si influye
>>     que la consola de R se ejecute desde allí a través de rJava, creo
>>     entender), y el ordenador tiene 2Gb de RAM.
>>
>>     Pues la cuestión es que des de hace unas semanas se me cuelga la
>>     sesión de R antes de llegar al final del procesado de archivos
>>     (hoy en el archivo número 180)
>>
>>     El mensaje de la consola es algo así como:
>>
>>     -------------------------------------------
>>     Error in system(paste("rm ", myfilename, sep = ""), TRUE) :
>>     cannot popen 'rm files_out/2010/report_on_file_list.txt', probable
>>     reason 'No s’ha pogut reservar memòria'
>>     -------------------------------------------
>>
>>     'No s’ha pogut reservar memòria' = No se ha podido reservar memoria
>>
>>     Y lo más curioso, es que si salgo de la sesión de R y Eclipse, y
>>     vuelvo a entrar, normalmente puedo ejecutar todo el procesado por
>>     lotes hasta el final sin problemas.
>>
>>     Así que me huelo que hay algun problema de gestión de memòria o en
>>     R o en Eclipse (y/o en mi script, claro).
>>
>>     ¿En lo que hace referencia a R (para ir descartando cosas, e ir
>>     aprendiendo a monitorear mejor el uso de su memoria por parte de
>>     mis scripts), hay alguna manera fácil de verla y moniteorarla?
>>
>>     Gracias de antemano por las pistas que me podáis dar para
>>     investigar más sobre el tema.
>>
>>     Xavi
>>
>>     _______________________________________________
>>     R-help-es mailing list
>>     R-help-es en r-project.org <mailto:R-help-es en r-project.org>
>>     https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>>
>
>        [[alternative HTML version deleted]]
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>



Más información sobre la lista de distribución R-help-es