Narzędzie do analizy użycia pamięci

Narzędzie do analizy użycia pamięci
mychal
  • Rejestracja:prawie 16 lat
  • Ostatnio:około 9 lat
  • Lokalizacja:Przedmonitorze Górne
0

Cześć!
Szukam narzędzia, które pokaże mi powód, dla którego aplikacja zżera sporo pamięci. Sprawdziłem aplikację pod kątem wycieków pamięci. Idealne narzędzie powinno pokazać mi nazwy typów, liczbę instancji danego typu oraz rozmiar.
Zapoznałem się z tym tematem http://stackoverflow.com/questions/9720943/how-to-analyze-excessive-memory-consumption-pagefileusage-in-a-delphi-applicat/
Ściągam AQtime, aby sprawdzić, czy mnie usatysfakcjonuje.
Próbowałem użyć VMMap, lecz dostarcza za mało informacji.
Nie mam za bardzo doświadczenia w tym zakresie, aplikacja jest dość duża, dlatego chciałbym uniknąć babrania się w źródłach.

EDIT: Aplikacja jest stworzona przy użyciu Delphi 7. Jednak minimalnym nakładem pracy mogę również odpalić ją na XE2.


I fart u die.
edytowany 1x, ostatnio: mychal
mychal
  • Rejestracja:prawie 16 lat
  • Ostatnio:około 9 lat
  • Lokalizacja:Przedmonitorze Górne
0
-123oho napisał(a)

Najpierw pytam, potem szukam. Genialne.

Informacji na ten temat szukałem zanim tutaj napisałem. To, że zaraz będę sprawdzał kolejne narzędzie(kobylaste jak cholera) po kilku już sprawdzonych, nie znaczy, że ktoś nie zna lepszego sposobu.

-123oho napisał(a)

Bodajże w nowszych Delphi jest coś takiego jeżeli chodzi o wycieki.

Nie wiem, ale odpowiadam - genialne. W XE2 jest narzędzie dostarczane z FastMM - FastMMUsageTracker - pokazuje tyle info ile VMMap(o tym niżej).

-123oho napisał(a)

Zdefiniuj za mało.

Nie podaje informacji o zaalokowanych typach oraz ich rozmiarach. Podaje adresy zajętych bloków pamięci oraz ich rozmiary

-123oho napisał(a)

Powodzenia. Może chcesz żeby samemu ci kod poprawiło? Debugger też powinien od razu sam poprawiać kod. A IDE pisać cały kod po wciśnięciu pierwszej literki.

Inne posty kolegi w podobnym tonie widzę:) Źle się wyraziłem - kod oczywiście przeanalizowałem, jednak nie mogę doliczyć się ilości danych za chiny.

-123oho napisał(a)

Zdefiniuj sporo.

500MB, gdzie szacunkowo powinno być 150-200.


I fart u die.
edytowany 3x, ostatnio: mychal
mychal
  • Rejestracja:prawie 16 lat
  • Ostatnio:około 9 lat
  • Lokalizacja:Przedmonitorze Górne
0

Chyba źle mnie zrozumiałeś. Nie chodzi mi o wycieki pamięci - tych nie ma(sprawdzone fastMM'em). Chodzi o informację co w danym momencie znajduje się w pamięci. Np. w jakimś typie mam tablicę o bardzo dużym rozmiarze i wiele instancji danego typu.

-123oho napisał(a)

Szacunkowo powinno być tyle bo?

Bo tworzę sobie X(25k) obiektów, sumuję rozmiar pól klasy, wszystkich nadklas oraz mnożę sumę przez X. I rezultaty znacznie się różnią. Dlatego chciałbym się dowiedzieć co pominąłem.


I fart u die.
mychal
  • Rejestracja:prawie 16 lat
  • Ostatnio:około 9 lat
  • Lokalizacja:Przedmonitorze Górne
0

Sprawdzałem to przy wyłączonych informacjach debugujących. InstanceSize dla TObject daje 4B(który uwzględniłem w obliczeniach, 4B vtable również uwzględniłem). Możesz rozwinąć swoją wypowiedź dotyczącą narzutów? Na pewno narzuty o których mówisz istnieją, jednak nie sądzę, aby w tym przypadku były jakieś znaczące.


I fart u die.
_13th_Dragon
  • Rejestracja:ponad 20 lat
  • Ostatnio:7 miesięcy
0

Powiedz czy użycie pamięci rośnie czy się trzyma na tym samym poziomie.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
mychal
  • Rejestracja:prawie 16 lat
  • Ostatnio:około 9 lat
  • Lokalizacja:Przedmonitorze Górne
0

Po utworzeniu wszystkich obiektów użycie pamięci się nie zmienia.

EDIT:
Generalnie w całym moim pytaniu chodzi o polecenie narzędzia do ułatwienia analizy tego zjawiska. Zwyczajnie chciałem oszczędzić sobie zbędnego zachodu, myśląc, że problem jest raczej popularny. W sobotę do tego wracam i najprawdopodobniej czeka mnie zwykła dokładna analiza całego kodu linijka po linijce, czego zwyczajnie chciałem uniknąć bo aplikacja jest dość rozbudowana.


I fart u die.
edytowany 1x, ostatnio: mychal

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.