A memória do processo aumenta muito mais rápido com GFLAGS +UST
-
11-09-2019 - |
Pergunta
Eu fiquei preso em um problema com Gflags Ao tentar encontrar alguns vazamentos de memória em um aplicativo Windows.
Quando eu ligo o ust Flag (para coletar alocações de memória empilham traços) A memória do meu aplicativo aumenta muito mais rapidamente do que quando a bandeira está desativada (atinge 800 MB em 10 min de abril. O que está longe do 50-100 MB/dia que recebo quando a bandeira está desligada).
Eu li que há um máximo para traços de pilha de 32 MB, então suponho que isso não deve ser um problema.
O computador é um 4x Intel (R) Xeon (R) CPU E5410 @ 2.33GHz.
Se alguém pudesse me dar uma dica, eu realmente apreciaria.
Obrigada!
Solução
O banco de dados do Stack Trace não é o único impacto do sinalizador do UST. Ele também adiciona pelo menos 32 bytes a cada alocação, a fim de armazenar seu ID de rastreamento de pilha. Isso pode explicar o aumento da sua memória se muitas pequenas alocações estiverem envolvidas. Se você iniciar o processo com um depurador anexado ou compilou o processo com o destino de depuração, os Windows Heaps serão definidos no modo de depuração e a sobrecarga por alocação será ainda maior.
Outras dicas
Você pode definir o tamanho máximo do banco de dados de rastreamento usando /traceDB sizeinmbe, consulte o Documentação do MSDN GFLAGS para capítulo e verso. Por padrão, não há tamanho máximo que provavelmente explique o comportamento que você viu.