Ferramentas de criação de perfil de memory .NET

Duplicar Possível:
Quais são alguns bons perfis do .NET?

Eu estou à procura de boas ferramentas de perfilação de memory .NET CLR.

Meu principal requisito é que ele funcione bem com o IIS e com aplicativos CLR autônomos. Idealmente, eu veria quais objects são alocados, onde eles são alocados e que tamanho eles são?

Alguém tem boas experiências com uma ferramenta específica que você gostaria de recomendar?

    Atualmente, estou avaliando tanto o Scitech .NET Memory Profiler 3.1 quanto o ANTS Memory Profiler 5.1 . Eu tentei o JetBrains um ano ou dois atrás e não era tão bom quanto o ANTS, então não me incomodei dessa vez. A partir da leitura dos sites, parece que não é tão bom para o perfil da memory quanto os outros dois.

    Tanto o ANTS quanto o profiler de memory Scitech têm resources que o outro não possui, portanto, o melhor depende das suas preferências. De um modo geral, o Scitech fornece informações mais detalhadas, enquanto o ANTS é realmente incrível em identificar o object que está vazando. No geral, eu prefiro o ANTS porque é tão rápido em identificar possíveis vazamentos.

    Aqui estão os principais prós e contras de cada um da minha experiência:

    Recursos comuns do ANTS e Scitech .NET Memory Profiler

    • Recurso de análise em tempo real
    • Vídeos instrutivos excelentes em seus sites
    • Fácil de usar
    • Razoavelmente performant (obviamente mais lento do que sem o profiler ligado, mas não tanto você fica frustrado)
    • Mostrar instâncias de objects com vazamento
    • Basicamente, ambos fazem o trabalho muito bem

    ANTS

    • Filtros de um clique para encontrar vazamentos comuns, incluindo: objects mantidos vivos apenas por manipuladores de events, objects que são descartados, mas ainda vivos, e objects que só estão sendo mantidos vivos por uma referência de um object descartado. Este é provavelmente o recurso matador de ANTS – encontrar vazamentos é incrivelmente rápido por causa disso. Na minha experiência, a maioria dos vazamentos é causada pelo fato de os manipuladores de events não serem desengatados e o ANTS leva você diretamente para esses objects. Impressionante.
    • Gráfico de retenção de objects. Embora a mesma informação esteja disponível na Scitech, é muito mais fácil de interpretar em ANTS.
    • Mostra tamanho com filhos além do tamanho do object em si (mas somente quando uma instância é selecionada infelizmente, não na lista geral de classs).
    • Melhor integração com o Visual Studio (clique com o botão direito do mouse no gráfico para ir para o arquivo)

    Scitech .NET Memory Profiler

    • Mostra o rastreamento de pilha quando o object foi alocado. Isso é realmente útil para objects alocados em vários locais diferentes. Com o ANTS, é difícil determinar exatamente onde o object vazado foi criado.
    • Mostra a contagem de objects descartáveis ​​que não foram descartados. Embora não seja indicativo de um vazamento, ele identifica oportunidades para corrigir esse problema e melhorar o desempenho do aplicativo como resultado da garbage collection mais rápida.
    • Opções de filtragem mais detalhadas (várias colunas podem ser filtradas independentemente).
    • Apresenta informações sobre o total de objects criados (incluindo o lixo coletado). ANTS mostra apenas statistics de objects ‘ao vivo’. Isso torna mais fácil analisar e ajustar o desempenho geral do aplicativo (por exemplo, identificar onde muitos objects estão sendo criados desnecessariamente que não estão necessariamente vazando).

    Para resumir, acho que o ANTS ajuda você a descobrir o que está vazando mais rápido, enquanto a Scitech fornece um pouco mais de detalhes sobre o desempenho geral da memory do aplicativo e objects individuais quando você sabe o que observar (por exemplo, rastreamento de pilha na criação). Se o rastreamento de pilha e o rastreamento de objects descartáveis ​​não-dispostos fosse adicionado à ANTS, não veria a necessidade de usar qualquer outra coisa.

    Estranho que o CLR Profiler não seja mencionado aqui ainda. É grátis e funciona bem.

    Cuidado com as várias versões antigas disponíveis no próprio site da Microsoft. A partir de novembro de 2011, a última versão parece ser esta: última versão (link alternativo)

    Se você está se sentindo realmente desesperado, você pode usar o WinDbg com a biblioteca Son of Strike (SOS.DLL) que vem com o framework .Net.

    Grande fã do JetBrains Profiler

    .Net Memory Profiler me ajudou muito no meu projeto anterior. Não é grátis, mas é muito bom.

    O .NET Memory Profiler é uma ferramenta poderosa para encontrar vazamentos de memory e otimizar o uso de memory em programas escritos em C #, VB.NET ou qualquer outra linguagem .NET.

    Eu segundo perfil ANTS .

    Além de mostrar tudo o que você precisa, ele desenha um gráfico simples onde você pode ver o que leva mais tempo para executar e o que come memory. Quando você clica em graphp, ele mostra a linha correspondente em seu código.

    E gosto de pequenas barras de progresso que se afogam em linhas de código que demoram muito para serem executadas.

    Atualmente estou usando o ANTS Profiler . É uma ferramenta muito boa com muitas opções de detalhes de perfil e funciona bem com aplicativos autônomos, servidor de desenvolvimento e IIS.

    Como todos estão listando as ferramentas disponíveis, pensei em apontar a lista completa de criadores de perfil para o .NET: http://sharptoolbox.com/categories/profilers-debuggers

    Você encontrará as ferramentas sugeridas aqui e todas as outras, cada uma com uma breve descrição do que ela propõe.

    Eu usei o Aqtime com grande sucesso ao longo dos anos. Eu tentei ANTS e outros, mas voltei para Aqtime como também faço muito desenvolvimento em código não gerenciado.