Compartilhar via


Contadores de desempenho no .NET Compact Framework

O .NET Compact estrutura não dá suporte a PerformanceCounter objetos porque eles não pertencem ao Windows CE e o .NET Compact estrutura. Entretanto, o .NET Compact Framework contém um conjunto de contadores de desempenho predefinidos para analisar os tipos de carga que seu aplicativo tem no .NET Compact Framework.Os contadores não são extensíveis.

Você pode gerar um arquivo no seu dispositivo contendo estatísticas de desempenho sobre seu aplicativo.Para obter um procedimento passo a passo, consulte Como: Gerar estatísticas de desempenho.

Os contadores de desempenho são úteis para compreender o impacto de coleta de lixo e compilação Just-In-Time no desempenho do aplicativo.Você pode determinar onde devem ocorrer otimizações dessas estatísticas.

O arquivo estatísticas lista os contadores de desempenho com as seguintes colunas.

Coluna

Descrição

Total

Somatório de ocorrências.

Último Dado

O último elemento de informação.

N

O número de ocorrências.

Média

O intermediário entre outros valores.

Min

O valor mínimo.

Max

O valor máximo.

Contadores do .NET Compact Framework

Os contadores de desempenho são organizados nas seguintes categorias:

Carregador

Compilação JIT

Genéricos

Exceções

Bloqueios e segmentos

Interoperabilidade

Coleta de lixo

Rede

Memória

Windows Forms

Contadores carregadores

sistema autônomo seguintes contadores pertencem à parte do common linguagem tempo de execução (CLR) que é responsável por resolver e carregar componentes referenciados pelo seu aplicativo, sistema autônomo assemblies e classes.

Nome e nome curto

Descrição

Tipo de contador

Tempo total de execução do programa (ms)

RunTime

O time decorrido, em milissegundos, de chamada do CLR.

Calculado

Domínios de aplicativo criados

Domínios napplication

O número de domínios de aplicativo criado no processo do aplicativo.

Simples

Domínios de aplicativo não carregados

domínios não carregados napplication

O número de domínios de aplicativo que tenha sido descarregado durante o time de execução do aplicativo.

Simples

Módulos carregados

nAssembliesloaded

O número de módulos (assemblies) que tiverem sido carregados em todos os domínios de aplicativo para o aplicativo.

Simples

Classes carregadas

nClassesloaded

O número de classes que tiverem sido carregados em todos os domínios de aplicativo durante o time de execução do aplicativo.

Simples

Métodos carregados

nMethodsloaded

A contagem total dos métodos carregados em todos os domínios de aplicativo durante o time de execução do aplicativo.

Simples

Contadores genéricos

Os contadores genéricos são carregador contadores específicos para o recurso genéricos do CD.O CLR usa genéricos internamente.Conseqüentemente, você poderá ver valores esses contadores, mesmo se seu aplicativo não usa explicitamente os genéricos.

Nome e nome curto

Descrição

Tipo de contador

Tipos fechados carregados

nInstGenericTypesLoaded

A contagem dos únicos tipos genéricos que tiverem sido carregados em todos os domínios de aplicativo.

A tipo fechado é uma classe genérica que tenha sido limite com um tipo de dados específico.Por exemplo, uma instância de MyGenericType<Int32> é um tipo fechado.

Simples

Tipos fechados carregados por definição

nMaxClosedTypes

O número máximo dos únicos tipos genéricos criados para uma definição determinada entre todos os domínios de aplicativo.

Por exemplo, se um aplicativo instancia MyGenericType<Int32>, MyGenericType<String>, e MyGenericType<Single>, o número de tipos fechados carregados para o MyGenericType<T> a definição é três (3).

Um grande número (várias centenas ou mais) na coluna Max pode indicar pressão do conjunto de trabalho em termos de código com compilação JIT e estruturas de dados CLR.

StaticOnly

Tipos abertos carregados

nOpenTypesLoaded

A contagem de tipos genéricos abertos criados em todos os domínios de aplicativo.

An em em aberto tipo é uma classe genérica que foi carregado, mas não foi vinculada com um tipo de dados específico.Normalmente tipos abertos são criados apenas em cenários de reflexão.

Por exemplo, carregar uma instância de MyGenericType<T> usando reflexão incrementará o contador de em em aberto tipos carregados. Quando o tipo for limite, sistema autônomo em MyGenericType<String>, torna-se um tipo fechado e o contador fechado tipos carregados é incrementado. O CLR do .NET Compact estrutura usa a reflexão internamente e podem ser de fonte para o em aberto tipos.Por exemplo, serialização de XML e Web services usam reflexão internamente.

Simples

Métodos fechados carregados

nInstGenericMethodsLoaded

A contagem dos únicos genéricos métodos que tiverem sido carregados em todos os domínios de aplicativo.

A método fechado é um método genérico que foi limite com um tipo de dados específico.O tipo que contém o método pode ou não ser um tipo genérico.Por exemplo, uma instância de MyType.ProcessData<Int32>() é um método fechado.

Simples

Métodos fechados carregados por definição

nMaxClosedMethods

O número máximo dos únicos métodos genéricos criados para uma definição determinada entre todos os domínios de aplicativo genérico.

Esse contador é muito semelhante ao fechado tipos carregados por definição do contador.Usando as seguintes instâncias de MyType.ProcessData<Int32>(), MyType.ProcessData<String>(), e MyType.ProcessData<Single>() criará três métodos fechados para o MyType.ProcessData<T>() definição.

sistema autônomo ocorre com o fechado tipos carregados por definição do contador, um grande número (várias centenas ou mais) na coluna Max pode indicar pressão do conjunto de trabalho em termos de código com compilação JIT e estruturas de dados CLR.

StaticOnly

Métodos abertos carregados

nOpenMethodsLoaded

A contagem dos métodos genéricos abertos criados entre todos os domínios de aplicativo.Normalmente métodos abertos são criados apenas em cenários de reflexão.An o método em aberto é um método genérico que foi carregado, mas não limite a um tipo específico.

O tempo de execução do .NET Compact estrutura usa a reflexão internamente e pode ser fonte dos métodos abertos.

Simples

Contadores de segmentos e de bloqueios

Os seguintes contadores pertencem a segmentação, bloqueios, timers, e pools de segmento.Esses contadores podem ajudar a identificar problemas de desempenho relacionados ao threading, fornecendo dados no thread, temporizador e uso de bloquear durante o time de execução do seu aplicativo.

Nome e nome curto

Descrição

Tipo de contador

Segmentos no pool de segmento

nThreads

O número de segmentos atualmente no pool de segmento.

Esse contador considera os threads que são iniciados usando o QueueUserWorkItem método. Esse contador não inclui segmentos que são iniciados usando o Start método.

MinMax

timers pendentes

nPendingTimers

O número de timers atualmente na fila.

MinMax

Timers agendados

nTimersStarted

O número de timers que estão atualmente em execução ou agendados para serem executados.

Simples

Timers atrasados pelo limite do pool de segmento

nTimersDelayed

A contagem de timers que tiverem sido atrasados pelo limite pool de segmento.

Simples

Itens de trabalho enfileirados

nWorkItemsQueued

A contagem de itens de trabalho na fila para o pool de segmento.

Simples

Chamadas Monitor.Enter não contestadas

nUncontestedMonitor

Contagem das chamadas feitas para o Enter método que não foram contested.

Simples

Chamadas Monitor.Enter contestadas

nContestedMonitor

Contagem das chamadas feitas para Enter foram contested.

Em aplicativos multissegmentados, se Thread1 está mantendo um bloquear e Thread2 precisa do código de acesso que é protegido pelo bloquear de chamadas monitor.Enter Contested contador é incrementado.

Simples

Lixo coleção contadores

Os seguintes contadores pertencem a operações de coleta de lixo.

Nome e nome curto

Descrição

Tipo de contador

Máximo de Bytes alocados (nativo + gerenciado)

cbPeakMemUsage

O número máximo de bytes em uso pelo CLR incluindo memória nativa e gerenciada.

Calculado

Objetos Gerenciados alocados

nObjectsAllocated

A contagem de objetos alocados pelo coletor de lixo.

Simples

Objetos gerenciados não utilizados alocados

nObjectsAllocatedNotUsed

A contagem de objetos alocados que nunca foram usados.

Simples

Bytes Gerenciados alocados

cbAllocated

A contagem de bytes alocados pelo coletor de lixo.

Complexo

Bytes gerenciados não utilizados alocados

cbAllocatedNotUsed

A contagem de bytes alocados que nunca foram usados.

Complexo

Objetos String Gerenciados alocados

nStrings

O número de objetos string gerenciados alocados pelo coletor de lixo.

Simples

Bytes de objetos String alocados

nStringBytes

A contagem de bytes de objetos string alocados pelo coletor de lixo.

Simples

Coleções de lixo (GC)

nGC

O número de vezes que o coletor de lixo foi executado.

Simples

Bytes coletados por GC

cbGarbage

A contagem de bytes coletados pelo coletor de lixo.

Complexo

Bytes gerenciados em uso após GC

cbLive

O número de bytes alocados para objetos do live após a última coleta de lixo.

MinMax

Total de bytes em uso após GC

cbWorkingSetMem

O número de bytes de memória, nativa e gerenciada, em uso após a última coleta de lixo.

MinMax

Compactações GC

nCompactions

O número de vezes o coletor de lixo compactou a pilha.

Simples

Pitchings de código

nPitches

O número de vezes que o coletor de lixo descartou código compilado JIT.

Simples

Chamadas para GC.Collect

nInduced

O número de vezes que o aplicativo tiver chamado o Collect método.

Simples

Tempo de latência GC (ms)

msLatency

O tempo total, em milissegundos, que o coletor de lixo demorou para coletar objetos e compactar a pilha.

O time de latência do coletor de lixo inclui a time para coletar objetos gerenciado que não estão mais no escopo e a time de compactação, se necessário, da pilha de coletor de lixo.

Complexo

Objetos fixados

nPinned

A contagem de objetos fixados encontrados ao executar uma coleta de lixo.

Objetos fixados são objetos cujos locais na memória não é possível alterar.Por exemplo, um buffer de memória que está sendo usado para se comunicar entre código gerenciado e é um objeto fixado.Objetos fixados não podem ser movidos pelo coletor de lixo durante a compactação de heap.

Simples

Objetos movidos por Compactador

nObjMoved

A contagem de objetos movidos pelo coletor de lixo durante uma compactação.

Simples

Objetos não movidos por Compactador

nObjNotMoved

A contagem dos objetos que não foram movidos pelo coletor de lixo durante uma compactação.

Objetos não podem ser movidos por vários motivos.Alguns objetos não podem ser movidos, mas esses objetos são raros.Outros objetos não são movidos porque eles são uma parte da heap não precisa ser compactado.

Simples

Objetos Finalizados

nFinalizersRun

A contagem de objetos para os quais um finalizador tiver sido executado.

Simples

Tipos de valor convertidos

nBoxes

O número de tipos de valor que tiverem sido convertidos.

Simples

Contadores de memória

Os seguintes contadores pertencem à memória heap gerenciada pelo coletor de lixo.

Nome e nome curto

Descrição

Tipo de contador

Heap de processo

HeapDefault

O número de bytes atualmente em uso pelo heap padrão do CLR.

A heap de processo contém a memória alocada pelo CLR não se ajustam outros heaps listados nesta tabela.

MinMax

heap temporário

HeapShortTerm

O número de bytes atualmente em uso pelo heap temporário do CLR.

A heap termo Short contém a memória alocada pelo CLR para uso temporário.

MinMax

Heap JIT

HeapJitCodeBuffer

O número de bytes em uso pelo heap do compilador JIT.

JIT heap contém o código nativo gerado quando o compilador JIT do .NET Compact estrutura compila um método gerenciado.Compilação JIT ocorre sempre que um método gerenciado é executado pela primeira vez ou na primeira vez que um método é executado depois que código será descartado.

MinMax

Heap do domínio de aplicativo

HeapAppDomain

O número de bytes em uso pelo heap do domínio do aplicativo do CLR.

A heap de domínio de aplicativo contém a representação dinâmica dos metadados usados pelo carregador do assembly do CLR.

MinMax

Heap GC

HeapGC

O número de bytes em uso pelo heap do coletor de lixo.

A heap de GC contém a memória alocada por aplicativos e o .NET Compact estrutura.

MinMax

Contadores de compilação JIT

Os seguintes contadores pertencem a operações do compilador JIT.

Nome e nome curto

Descrição

Tipo de contador

Jitted bytes nativos

cbJittedNative

A contagem de bytes de código nativo gerados pelo compilador JIT.

Complexo

Métodos Jitted

nMethodsJitted

A contagem de métodos gerados pelo compilador JIT.

Simples

Bytes Pitched

cbPitched

A contagem de bytes de código nativo gerado pelo compilador JIT que foram descartados.

Complexo

Métodos Pitched

nMethodsPitched

A contagem de métodos gerados pelo compilador JIT que foram descartados.

A menos que seu aplicativo foi movido para o plano de fundo durante o seu time de execução, qualquer valor positivo para o contador métodos Pitched indica que o aplicativo foi executado sob pressão de memória.

Simples

Tempo de latência de descarte de método (ms)

msPitchLatency

O tempo total, em milissegundos, gasto discartando métodos gerados pelo compilador JIT.

Complexo

Contadores de exceções

Os seguintes contadores pertencem às exceções.

Nome e nome curto

Descrição

Exceções Jogadas

nExceptions

A contagem de exceções gerenciadas que tiverem sido jogadas.

Como gerar uma exceção consome recursos significativos, o número de exceções lançadas por seu aplicativo de acompanhamento pode ajudar a identificar possíveis problemas de design.

Contadores de Interoperabilidade

Os seguintes contadores pertencem a interoperabilidade com código nativo.

Nome e nome curto

Descrição

Tipo de contador

Chamadas da Plataforma Invoke

nPInvoke

A contagem das chamdas da plataforma invoke do código gerenciado para código nativo, excluindo chamadas internas da plataforma CLR.

Simples

Chamadas COM usando uma vtable

nComVTable

A contagem de chamadas de código gerenciado para código nativo usando o método COM Interop vtable.

Simples

Chadas COM usando IDispatch

nComIDispatch

A contagem de chamadas de código gerenciado para código nativo usando a interoperabilidade COM IDispatch método.

Simples

Empacotamentos Complexos

nMarshal

O número de objetos empacotados do código gerenciado ao código nativo envolvidos copiando ou transformando os dados.

Simples

Runtime Callable Wrappers

cTotalRcw

A contagem total de COM Runtime Callable Wrappers adicionais que foram criados.

Os tempo de execução callable wrappers são criados quando um objeto COM não gerenciado chama código gerenciado em execução no tempo de execução do .NET Compact estrutura.

Simples

Rede de contadores

Os seguintes contadores pertencem a rede de operações enviar e receber.

Nome e nome curto

Descrição

Tipo de contador

Bytes enviados por soquete

nBytesSent

A contagem total de bytes enviados em soquetes.

Simples

Bytes recebidos por soquete

nBytesReceived

A contagem total de bytes recebidos por soquetes.

Simples

Contadores de formulários do Windows

Os seguintes contadores pertencem à System.Windows.Forms namespace.

Nome e nome curto

Descrição

Tipo de contador

Controles criados

nControlsCreated

O número total de controles criados pelo aplicativo.

Simples

Pincéis criados

nBrushesCreated

O número total de objetos de pincel criadas pelo aplicativo.

Simples

Canetas criadas

nPensCreated

O número total de objetos de caneta criadas pelo aplicativo.

Simples

Bitmaps criados

nBitmapsCreated

O número total de objetos de bitmap criados pelo aplicativo.

Simples

Regiões criadas

nRegionsCreated

O número total de objetos de região criadas pelo aplicativo.

Simples

Fontes criadas

nFontsCreated

O número total de objetos fonte criadas pelo aplicativo.

Simples

Gráficos criados (FromImage)

nGraphicsFromImage

O número total de objetos gráficos criados pelo FromImage método.

Simples

Gráficos criados (CreateGraphics)

nGraphicsCreateGraphics

O número total de objetos gráficos criados pelo CreateGraphics método.

Simples

Consulte também

Tarefas

Como: Gerar estatísticas de desempenho

Outros recursos

Desempenho e o diagnóstico no .NET Compact estrutura