¿Por qué está aumentando gradualmente MEM% a pesar de que estoy usando Archive :: Tar: streaming?

StackOverflow https://stackoverflow.com/questions/666655

  •  21-08-2019
  •  | 
  •  

Pregunta

Estoy usando Archive :: Tar :: streaming para archivar un directorio que contiene 4 GB muy pequeños archivos de código fuente pequeña y algunos frascos. Estoy usando un sistema con 4 GB de RAM y el uso de Archivo :: :: Tar streaming, porque no quiero que toda mi directorio para estar en la memoria, ya que da lugar a condición de falta de memoria. Yo la lectura de archivos de uno en uno desde el directorio de la SSE manera usando Archivo :: Buscar y escribirla en el archivo tar mediante Agregar método en el Archivo :: :: Tar streaming. En cualquier momento dado sólo un archivo reside en la memoria, incluso entonces MEM% de mi proceso de Perl está aumentando gradualmente. Llegó hasta un 20%. No hay ningún archivo en mi directorio que es de 800 MB. Tengo dos preguntas aquí 1) ¿Por qué se MEM% aumentando gradualmente? 2) ¿Por qué has que ha ido hasta un 20%. ¿Es porque Archive :: Tar no está liberando la memoria después de que ha escrito el contenido en el archivo tar?

¿Fue útil?

Solución

No es normal para su sobre la memoria VSZ crezca al procesar sus datos de una manera orientada a la corriente, y para Moreso (RES% MEM) que normalmente debería estabilizarse en su tipo de aplicación.

Por lo tanto sospecharía fuertemente que referencias cruzadas a los datos se mantienen alrededor de (por ejemplo en un hash), o (menos probable) se generan dicha circular referencias.

Vea este post, "¿hay alguna herramienta para encontrar fugas de memoria en mi programa de perl" para obtener consejos sobre el rastreo por qué variables (ser ellos en el código o en el módulo que está utilizando) crecerá el sobre de memoria o mantener referencias cruzadas en torno .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top