2011-04-27 21 views
8

¿Hay alguna forma de averiguar qué aplicación está utilizando toda la memoria del montón del escritorio?monitorización de la memoria del montón de escritorio

Para obtener una explicación de 'desktop heap', consulte this MSDN blog.

EDITAR: Si no sabe qué es la "memoria del montón de escritorio", no responda.

EDIT2 EDIT2: si no sabe qué es la "memoria del montón de escritorio", no vote para cerrar la pregunta.

Respuesta

0

Si desea hacerlo dentro de su programa, C++ puede usar WMI para encontrar al culpable.

+0

no es mi programa. hay algo en el servidor que pierde la memoria del montón de escritorio y necesito averiguar de qué se trata. ¿WMI específicamente tiene un gancho para el montón de escritorio? ¿Enlace por favor? –

+0

http://msdn.microsoft.com/en-us/library/aa390423(v=vs.85).aspx – Jess

+0

... pero ¿no puede simplemente usar TaskManager como sugiere SLaks? Elija Ver/Seleccionar columnas – Jess

3

Según esta publicación blog debe buscar los objetos del usuario. Para encontrar la aplicación incorrecta, puede configurar la columna Objetos del USUARIO en Process Explorer. Luego clasifique descendiendo por objetos de usuario. Los objetos de usuario son todos objetos de GUI como Windows, barras de herramientas, iconos, cursores ... El proceso con los valores más altos es muy probable que sea el malo.

Enlace directo para descargar: DHeapMon de microsoft.

+0

Creo que los objetos de usuario son solo una de las formas de perder montones de escritorios. No hay aplicaciones de GUI aquí, solo aplicaciones de servidor, por lo que es poco probable que ayude; Espero una visión clara del tipo: la aplicación a usa 10Kb de memoria de montón de escritorio, la aplicación b ... –

+0

Incluso para los procesos del servidor se crea Windows. Piense en la ventana oculta que COM utiliza para su bomba de mensaje STA. Dado que Windows se trata de COM, hay bastantes ventanas incluso en aplicaciones de servidor. Hasta donde sé, no hay forma de enumerar el uso del montón de escritorio por proceso. Como los objetos son identificadores, no hay forma de saber cuánta memoria de almacenamiento dinámico está usando ese ícono. –

+0

Estoy seguro de que hay una manera, pero requeriría tener un controlador de kernel. La herramienta debugheap diag de MS es un controlador de kernel. Lamentablemente, solo muestra el uso total, pero no quién lo está usando. Tiene razón en que los procesos del servidor tendrán objetos de GUI, pero no creo que puedan filtrarse ... Y definitivamente hay objetos no relacionados con la interfaz gráfica de usuario que usan dh. Todavía vale la pena intentarlo, por supuesto. –

Cuestiones relacionadas