2012-04-03 13 views
6

Actualmente estoy trabajando en un juego de metro para Windows 8 usando C# y SharpDX. El proyecto está yendo bien, pero recientemente ha habido una necesidad de comenzar a rastrear las pérdidas de memoria y no estoy realmente seguro de por dónde empezar.¿Cómo encontrar fugas de memoria en una aplicación de metro administrada de Win8?

El generador de perfiles incorporado en Visual Studio 11 no funciona para aplicaciones metropolitanas, WinDBG parece que no se puede conectar a aplicaciones metropolitanas (a menos que lo esté usando incorrectamente), y estoy teniendo un momento difícil encontrar información sobre cómo buscar asignaciones administradas en .NET 4.5 para metro.

¿Alguien tiene alguna experiencia con esto? ¿Hay un buen lugar para empezar a buscar? ¿Alguien ha tenido éxito con herramientas para ayudar a detectar fugas de memoria en aplicaciones metropolitanas?

+0

No gastaría mucho tiempo en esto todavía. Las probabilidades son buenas de que WinRT tenga pérdidas de memoria que se arreglarán antes de RTM. Simplemente va a pasar mucho tiempo trabajando con problemas temporales. Debería haber soporte de herramientas para entonces también. –

+1

Será mejor que ejecute esto a través del verificador de aplicaciones. Las probabilidades de que pueda obtener una aplicación que use SlimDX publicada a través de la tienda debería ser, bueno, Slim. –

+0

@HansPassant - Estoy de acuerdo. Puede que quiera verificar que incluso podrá publicarlo en la tienda, entiendo que a menos que SharpDX solo use el perfil de WinRT, las posibilidades de que se publique son mínimas o nulas. Si miramos la página del proyecto para SharpDX, las "características" que enumeran lo llevarán a creer que es compatible con el perfil de WinRT al usar las palabras "Estilo Metro", que incluso los propios productos de Microsoft simplemente significan un cierto estilo de diseño. Por supuesto, a partir del 30 de marzo de 2012 SharpDX ni siquiera es compatible con Windows 8 CP. –

Respuesta

2

Parece que realmente podría usar WinDbg, simplemente no funcionaba con el modo invasivo. Mi culpa.

1

Me gustaría, al menos por ahora, asumir que las pérdidas de memoria no son causadas por Metro o SharpDX.

mira esto: Memory Leaks C#

(. O simplemente buscar SO para "fugas de C# de memoria")

Una vez que pasan a través de la lista de cosas extraídas de la consulta enlace/búsqueda anterior, a continuación, mover para verificar el código relacionado con SharpDX/Metro. Las mejores pautas vinieron de mi madre cuando era joven: "Limpia después de ti cuando termines de jugar". Deseche los objetos cuando haya terminado con ellos, no deje DB, archivos o secuencias de memoria abiertas por más tiempo del que necesita. Esta es la causa de los problemas de pérdida de memoria de muchas personas, incluida la mía.

+0

He estado pasando un tiempo con los sospechosos habituales (transmisiones, ID identificables, eventos), pero busco más herramientas o funciones que puedan darme una idea de lo que se asigna actualmente. Incluso el simple hecho de poder obtener una lista de asignaciones administradas sería una gran ayuda para encontrar las verdaderas áreas problemáticas. –

-1

Sugiero que utilice este http://msdn.microsoft.com/en-us/magazine/jj721593.aspx. Hay muchas explicaciones sobre la pérdida de memoria.

+0

En lugar de simplemente publicar un enlace (un comentario habría sido mejor para eso), al menos debe señalar algunos aspectos destacados de las técnicas discutidas en ese artículo. – Tuxdude

Cuestiones relacionadas