2012-04-03 19 views
6

Obecnie pracuję nad grą metra dla systemu Windows 8 przy użyciu C# i SharpDX. Projekt idzie dobrze, ale ostatnio zaczęto śledzić wycieki pamięci i nie jestem pewien, od czego zacząć.Znajdowanie wycieków pamięci w zarządzanej aplikacji Metro w Win8?

Wbudowany program do profilowania pamięci w Visual Studio 11 nie działa jeszcze w aplikacjach metra, WinDBG nie może się łączyć z aplikacjami w metrze (chyba że używam go niepoprawnie) i mam ciężki czas znajdowanie informacji o zarządzaniu przydziałami w .NET 4.5 dla metra.

Czy ktoś ma z tym jakieś doświadczenie? Czy jest dobre miejsce do rozpoczęcia poszukiwań? Czy ktoś osiągnął sukces dzięki narzędziom do wykrywania wycieków pamięci w aplikacjach metra?

+0

Nie spędziłbym jeszcze czasu na to. Szanse są dobre, że sam WinRT ma wycieki pamięci, które zostaną naprawione przed RTM. Po prostu spędzasz sporo czasu, pracując nad tymczasowymi problemami. Do tego czasu powinno być również wsparcie dla narzędzi. –

+1

Powinieneś uruchomić to przez weryfikator aplikacji. Szanse, że możesz dostać aplikację, która używa SlimDX opublikowana przez sklep, powinny być, no cóż, Slim. –

+0

@HansPassant - Zgadzam się. Być może zechce zweryfikować, czy będzie nawet w stanie opublikować go w sklepie. Rozumiem, że jeśli SharpDX używa tylko profilu WinRT, szanse na jego publikację są znikome. Patrząc na stronę projektu SharpDX, lista "funkcji", które oni wymyślili, doprowadziłaby do przekonania, że ​​obsługuje profil WinRT, używając słów "Metro Style", które nawet z własnych produktów Microsoftu oznaczają po prostu pewien styl. Oczywiście od 30 marca 2012 SharpDX nie obsługuje nawet Windows 8 CP. –

Odpowiedz

2

Wygląda na to, że mógłbym faktycznie używać WinDbg, to po prostu nie działało w trybie inwazyjnym. Moja wina.

1

Byłbym, przynajmniej na razie, zakładać, że wycieki pamięci nie są spowodowane przez Metro lub SharpDX.

to sprawdzić: Memory Leaks C#

(. Albo po prostu szukać więc dla „przecieków C# Memory”)

Po przejść przez listę kontrolną rzeczy wywnioskować z powyższego zapytania link/wyszukiwania, a następnie przenieść na sprawdzenie kodu związanego z SharpDX/Metro. Najlepsze wskazówki pochodziły od mojej mamy, kiedy byłem młody: "Sprzątnij po sobie, kiedy skończysz grać." Pozbywaj się obiektów, gdy skończysz, nie pozostawiaj otwartych plików, plików ani strumieni pamięci dłużej, niż potrzebujesz. Jest to przyczyna problemów z wyciekami pamięci wielu osób, w tym mojej.

+0

Spędziłem trochę czasu ze zwykłymi podejrzanymi (strumienie, IDisposables, zdarzenia), ale bardziej szukam narzędzi lub funkcji, które pozwolą mi wgląd w to, co jest obecnie przydzielone. Nawet samo posiadanie listy zarządzanych przydziałów stanowiłoby ogromną pomoc w znalezieniu prawdziwych obszarów problemowych. –

Powiązane problemy