Como faço para solucionar uma grande descontinuidade no uso da memória no Windows 7?

2

Estou fazendo alguns testes de desempenho sérios no analisador de arquivos binários que estou escrevendo no trabalho. Depois de implementar o multiprocessamento para acelerar bastante a análise, eu me concentrei em reduzir o consumo de memória, o que pode se tornar significativo com centenas de milhares de arquivos. Então, ontem eu configurei um profiler de memória Python de baixa tecnologia (executei tasklist como um comando do sistema, redirecionei para um arquivo, li e analisei o arquivo) e o configurei para ver se tinha algum vazamento de memória que foi sendo construído lentamente Tempo. Aqui estão os resultados.

Arespostaparaaminhaperguntaparecesernão,oupelomenosnãoapreciavelmente.(Issosalvaosresultadosemumarquivoshelveacadaalgunsmilhares,daíopadrãosawtooth).Mas,obviamente,aprimeiracoisaquenoteifoiosaltode900MB,queaconteceuemalgumintervalodeaproximadamente90segundos.Issomelembroudeoutraocorrênciaquegraveipelaprimeiravezfazendoessetestedealtovolume:

Apenas ao contrário, é claro. Ambas as vezes há um salto de quase 1 GB no uso da memória. Isso não parece ter nada a ver com o meu programa, então eu provavelmente não deveria me preocupar muito com isso. Mas alguém sabe o que poderia estar causando isso?

UPDATE: Eu executei a sessão de análise massiva novamente, mantendo os logs regulares da lista de tarefas, monitorando o uso da RAM e usando o RamMap. A lista de tarefas não encontrou nada incomum que pudesse ser responsável pelo uso excessivo de RAM. (O gráfico do Excel não encontra nada) Mas usando RamMap acho que encontrei o culpado. Olhando para instantâneos do meu uso de memória antes e depois da descontinuidade maciça (que aconteceu exatamente como o meu programa saiu desta vez), eu vi que a categoria "Arquivo mapeado" estava usando toda a memória extra. Especificamente, o arquivo temporário que meu programa estava criando (que tinha crescido bem mais de 1 GB) estava dominando o uso de memória dessa categoria; na guia "Resumo do arquivo", ele usava mais de 1 GB. Eu modifiquei o meu programa para salvar os resultados neste arquivo especificamente para evitar o uso de memória excessiva, por isso é lamentável que ainda seja de alguma forma. Isso é porque eu não estava fechando o arquivo entre usos? A abertura sempre carregará a coisa toda na memória? (Ele foi criado com o módulo shelve do Python para armazenar dados mapeados). Isso provavelmente ainda não responde à pergunta sobre o que aconteceu no gráfico do Excel, mas é um problema com o qual tenho lidado a semana toda.

    
por dpitch40 11.08.2011 / 16:32

1 resposta

4

Use um gerenciador de perfis de memória em seu aplicativo para encontrar o culpado, encontre um para seu idioma específico.

Você pode usar VMMap e RAMMap para uma visão da perspectiva do sistema operacional para informações mais gerais ...

    
por 11.08.2011 / 16:38