2012-04-03 8 views
6

Attualmente sto lavorando a un gioco Metro per Windows 8 usando C# e SharpDX. Il progetto sta andando bene, ma di recente c'è stata la necessità di iniziare a rintracciare le perdite di memoria e non sono davvero sicuro da dove cominciare.Individuazione di perdite di memoria in un'app della metropolitana di Win8 gestita?

Il profiler di memoria incorporato in Visual Studio 11 non funziona ancora per le app metro, non sembra che WinDBG si connetta alle app metropolitane (a meno che non lo stia usando in modo errato), e sto attraversando un periodo difficile trovare qualsiasi informazione su come considerare le allocazioni gestite in .NET 4.5 per metro.

Qualcuno ha qualche esperienza con questo? C'è un buon posto per iniziare a cercare? Qualcuno ha avuto successo con strumenti per aiutare a rilevare perdite di memoria nelle app della metropolitana?

+0

Non vorrei spendere un sacco di tempo su questo ancora. Le probabilità sono buone che WinRT abbia perdite di memoria che verranno corrette prima di RTM. Passerai un po 'di tempo a lavorare su problemi temporanei. Ci dovrebbe essere il supporto degli strumenti anche da allora. –

+1

Faresti meglio a farlo attraverso il verificatore dell'app. Le probabilità che tu possa ottenere un'app che utilizza SlimDX pubblicata attraverso lo store dovrebbero essere, beh, Slim. –

+0

@ HansPassant: sarei d'accordo. Potrebbe voler verificare che sarà persino in grado di pubblicarlo nello store, a mio avviso è che, a meno che SharpDX non usi il profilo WinRT, le probabilità che venga pubblicata sono ridotte a zero. Guardando la pagina del progetto per SharpDX, le "caratteristiche" che elencano ti porterebbero a credere che supporti il ​​profilo WinRT usando le parole "Metro Style" che, anche dai prodotti propri di Microsoft, significa semplicemente un certo stile di design. Naturalmente dal 30 marzo 2012 SharpDX non supporta nemmeno il CP di Windows 8. –

risposta

2

Sembra che potrei effettivamente utilizzare WinDbg, semplicemente non funzionava con la modalità invasiva. Colpa mia.

1

Vorrei, almeno per ora, supporre che le perdite di memoria non siano causate da Metro o SharpDX.

Check this out: Memory Leaks C#

(. O solo di ricerca in modo per "perdite di C# di memoria")

Una volta che si passa attraverso la lista di cose raccolte da quanto sopra query di link/di ricerca, quindi spostare sul controllo del codice relativo a SharpDX/Metro. Le migliori linee guida provenivano da mia madre quando ero giovane: "ripulisci te stesso quando hai finito di giocare". Smaltire gli oggetti quando hai finito con loro, non lasciare DB, file o flussi di memoria aperti più a lungo di quanto tu ne abbia bisogno. Questa è la causa dei problemi di perdita di memoria di molte persone, inclusa la mia.

+0

Ho trascorso un po 'di tempo con i soliti sospetti (flussi, IDisposables, eventi), ma ho più bisogno di strumenti o funzioni che possano darmi un'idea di ciò che è attualmente assegnato. Anche solo essere in grado di ottenere un elenco di allocazioni gestite sarebbe di grande aiuto nel trovare le vere aree problematiche. –

-1

Suggerisco di utilizzare questo http://msdn.microsoft.com/en-us/magazine/jj721593.aspx. Ci sono molte spiegazioni sulla perdita di memoria.

+0

Invece di pubblicare semplicemente un link (un commento sarebbe stato meglio per questo), dovresti almeno evidenziare alcuni punti salienti delle tecniche discusse in quell'articolo. – Tuxdude

Problemi correlati