Jakiego narzędzia mogę użyć do analizy użycia pamięci? [Zamknięte]

Mam aplikację Windows napisaną przy użyciu C ++ przy użyciu Visual Studio 2008. Chcę uzyskać statystyki wykorzystania pamięci, aby znaleźć wąskie gardła i lokalizacje do pracy z wykorzystaniem pamięci. Idealnie chciałbym mieć narzędzie, które robi to bez konieczności wchodzenia i dodawania logiki licznika / profilowania do samego kodu. Zasadniczo szukam:

Lista wszystkich przydziałów (uwolniona lub nie powinna mieć znaczenia, chcę wiedzieć za każdym razem, gdy coś jest przydzielane)Callstack każdego przydziału i licznik reprezentujący liczbę wywołań kodu i przydzielenie pamięci.Informacje o tym, która pamięć została zwolniona vs nie zwolniona (aby znaleźć przecieki). Najlepiej byłoby, gdyby był wystarczająco inteligentny, aby określić, czy pamięć jest nadal używana, czy też rzeczywiście wyciekła (przez zakres lub jakiś inny inteligentny mechanizm).

Nie obchodzi mnie, czy to darmowe narzędzie, czy nie. Oto kilka narzędzi, które już sprawdziłem:

Rational PurifyPlus: Szczerze mówiąc, nie byłem w stanie wykorzystać tego narzędzia. Zwraca wiele fałszywych alarmów. Ponadto, nie daje mi pierwszych 2 pozycji na mojej liście powyżej, zamiast tego wydaje się skupiać tylko na błędach pamięci i wyciekach.Sysinternals VMMap: To narzędzie jest interesujące i pozwala mi zobaczyć, w jaki sposób pamięć jest rozłożona (stos vs kupa vs wspólna kupa, itp.). Pozwala także zobaczyć drzewo połączeń przydziałów, ale nie jest zbyt intuicyjne ani pomocne. Trudno zrozumieć sens tych danych.DevPartner Boundschecker: Naprawdę uważam, że jest to najbardziej bezużyteczne narzędzie do tej pory. Użyłem go lata temu, zanim zostały wykupione przez DevPartner i pamiętam, że działało znacznie lepiej. Ale tak naprawdę nie daje mi danych statystycznych, których potrzebuję, ani też nie jest w stanie prawidłowo wykryć wycieków pamięci.

Z góry doceniam wszelką pomoc / poradę. Moja aplikacja jest serwerem i z czasem cierpi na poważne problemy ze wzrostem pamięci podczas testów warunków skrajnych (i ostatecznie ulega awarii z powodu przekroczenia limitu wirtualnych bajtów dla aplikacji 32-bitowych). Posiadanie odpowiedniego narzędzia pomoże mi wyizolować miejsce, w którym przydzielamy pamięć, a także miejsce, w którym możemy przeciekać pamięć.

questionAnswers(5)

yourAnswerToTheQuestion