Existe uma maneira de localizar qual parte do processo utilizou a maior parte da memória, olhando apenas para um arquivo principal gerad

Eu tenho um processo (que é iniciado por um cão de guarda todas as vezes, é interrompido por algum motivo), que geralmente usa cerca de 200 MB de memória. Uma vez eu vi que ela está consumindo a memória - com um uso de memória de 1,5 a 2 GB, o que definitivamente significa um "vazamento de memória" em algum lugar ("vazamento de memória" entre aspas, pois esse não é um vazamento de memória real - como a memória alocada, nunca liberae inacessível - observe quepenas ponteiros inteligentes são usados. Então, penso em um contêiner enorme (não encontrei) ou algo assim)

ais tarde, o processo falhou, devido ao alto uso de memória e a geração de um core dump - cerca de 2 GB. Mas o problema é que não consigo reproduzir o problema, entãovalgrind não vai ajudar aqui (eu acho). Isso acontece muito raramente e não consigo "pegá-lo".

ntão, minha pergunta é - existe uma maneira de usar o exe e o arquivo principal para localizar qual parte do processo usou a maior parte da memóri

Eu dei uma olhada no arquivo principal comgdb, não há nada incomum. Mas o núcleo é grande, então deve haver algo. Existe uma maneira inteligente de entender o que aconteceu, ou apenas adivinhar pode ajudar (mas para um exe tão grande .., 12 threads, cerca de 50-100 (pode ser mais) classes, etc.)

É umC++ aplicativo, executando no RHEL5U

questionAnswers(4)

yourAnswerToTheQuestion