Compartir a través de


Habilitación de la captura de datos del montón

El análisis del montón de procesos es más eficaz cuando se recopilan pilas que capturan eventos HeapAlloc y HeapRealloc . Para descodificar pilas con símbolos, debe habilitar la descodificación de símbolos. Puede capturar datos del montón cuando se inicia un proceso o en un proceso existente.

Para habilitar la captura de datos cuando se inicia un proceso

En este ejemplo se inicia el proceso que se analiza desde la secuencia de línea de comandos que inicia la captura de datos. Habilitar la captura de datos cuando se inicia un proceso garantiza que no se pierda información de asignación ni historial. Siga estos pasos para habilitar la captura de datos en el inicio del proceso:

  1. En un símbolo del sistema con privilegios elevados, escriba el siguiente comando: xperf -on Base -BufferSize 1024 -MinBuffers 10 -MaxBuffers 16

  2. A continuación se muestra un comando de ejemplo: xperf -start HeapSession -heap -PidNewProcess "C:\Program Files\Windows Sidebar\sidebar.exe" -BufferSize 1024 -MinBuffers 128 -MaxBuffers 128 -stackwalk HeapAlloc+HeapRealloc

    La barra lateral se abre en el escritorio.

    En la tabla siguiente se describen estos comandos.

    Comando Descripción

    -start HeapSession

    Inicializa una sesión de seguimiento o una sesión de registrador. En este caso, la sesión se denomina "HeapSession".

    -Montón

    Identifica "HeapSession" como un seguimiento del montón.

    -PidNewProcess

    Inicializa un proceso. En este caso, inicializa la barra lateral de Windows.

    -BufferSize

    Establece el tamaño del búfer del búfer en el que se almacenan los datos del evento. Un tamaño óptimo para un búfer es de 1024 KB. El valor predeterminado es 64 KB.

    -MinBuffers

    Establece el número mínimo de búferes para el almacenamiento de datos de eventos. MinBuffers debe ser igual a MaxBuffers para garantizar la coherencia entre seguimientos.

    -MaxBuffers

    Asigne MaxBuffers de forma conservadora, ya que los búferes se asignan desde memoria no paginada, que es un recurso finito del sistema.

    -stackwalk

    Inicializa la instalación de stackwalk para recopilar información de asignación y desasignación y asociar esa información a subprocesos específicos.

    HeapAlloc+HeapRealloc

    Identifica eventos de montón específicos que se van a capturar y presentar en la instalación de stackwalk.

  3. Escriba el siguiente comando: xperf -stop -stop HeapSession -d HeapTrace.etl

    El -d HeapTrace.etl comando combina seguimientos generados en la sesión en el archivo HeapTrace.etl.

Para habilitar la captura de datos en un proceso existente

Esta opción habilita la captura de datos sin detener y reiniciar el proceso. Esto puede ser ventajoso cuando el escenario que se analiza no se produce hasta que se inicia la aplicación, y no se necesita la asignación inicial del montón (que puede generar archivos de seguimiento extremadamente grandes).

Siga estos pasos:

  1. Desde un símbolo del sistema con privilegios elevados, inicie el registrador de kernel de NT con la marca BASE de la siguiente manera: xperf -on BASE

  2. Para habilitar el seguimiento del montón en un proceso existente, sustituya el identificador de proceso real de XXX en el siguiente comando: xperf -start HeapSession -heap -Pid XXX -BufferSize 1024 -MinBuffers 128 -MaxBuffers 128 -stackwalk HeapAlloc+HeapRealloc

  3. Prepare los seguimientos para el análisis de la misma manera que para la captura de datos cuando se inicia un proceso: xperf -stop -stop HeapSession -d heapTrace.etl

Montón