¿Cómo soluciono los problemas de una gran discontinuidad en el uso de la memoria en Windows 7?


2

Estoy haciendo algunas pruebas de rendimiento serias en el analizador de archivos binarios que estoy escribiendo en el trabajo. Después de implementar el multiprocesamiento para acelerar en gran medida el análisis, me concentré en reducir la huella de la memoria, que puede ser importante con cientos de miles de archivos. Entonces, ayer configuré un generador de perfiles de memoria Python de muy baja tecnología (Ejecutar la lista de tareas como un comando del sistema, redirigido a un archivo, leer y analizar el archivo) y configurarlo para que funcione para ver si tuve alguna pérdida de memoria que se acumuló lentamente hora. Aquí están los resultados.

Gráfico de memoria

La respuesta a mi pregunta parece ser no, o al menos no apreciable. (Guarda los resultados en un archivo de almacenamiento cada pocos miles, de ahí el patrón de diente de sierra) Pero, obviamente, lo primero que noté fue el salto de 900 MB, que ocurrió en algún momento dentro de un intervalo de aproximadamente 90 segundos. Me recordó otra ocurrencia que grabé la primera vez que hice esta prueba de alto volumen:

Imagen del monitor del sistema

Solo a la inversa, por supuesto. En ambas ocasiones hay un salto de casi 1 GB en el uso de la memoria. Esto no parece tener nada que ver con mi programa, por lo que probablemente no debería preocuparme demasiado por ello. Pero, ¿alguien sabe qué podría estar causando esto?

ACTUALIZACIÓN: volví a ejecutar la sesión de análisis masivo, mantuve registros regulares de la lista de tareas, monitoreé el uso de RAM y usé RamMap. La lista de tareas no encontró nada inusual que pudiera explicar el uso progresivo de RAM. (El gráfico de Excel no encuentra nada) Pero usando RamMap creo que encontré al culpable. Al observar las instantáneas de mi uso de memoria antes y después de la discontinuidad masiva (que sucedió justo cuando mi programa salió esta vez), vi que la categoría "Archivo mapeado" estaba usando toda la memoria extra. Específicamente, el archivo temporal que estaba creando mi programa (que había crecido a más de 1 GB) dominaba el uso de memoria de esta categoría; en la pestaña "Resumen de archivos" estaba usando más de 1 GB. Modifiqué mi programa para guardar resultados en este archivo específicamente para evitar el uso de memoria excesiva, por lo que es lamentable que todavía lo sea de alguna manera. ¿Es esto porque no estaba cerrando el archivo entre usos? ¿Abrirlo siempre cargará todo en la memoria? (Fue creado con el módulo de estantería de Python para almacenar datos mapeados) Esto probablemente todavía no responde a la pregunta de qué sucedió en el gráfico de Excel, pero es un problema que he estado tratando toda la semana.

Respuestas:


4

Use un generador de perfiles de memoria en su aplicación para encontrar al culpable, encuentre uno para su idioma específico.

Puede usar VMMap y RAMMap para una vista desde la perspectiva del sistema operativo para obtener información más general ...


Bueno, la aplicación no es responsable del gran salto en el uso de la memoria; algo más está sucediendo.
dpitch40
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.