2011-01-10 9 views
2

Ich finde AQTime schwer zu verwenden, weil es das ursprüngliche Programm zu sehr stört. Wenn ich ein Programm habe, das zum Beispiel 300 MB RAM verwendet, kann ich AQTime's Zuweisungsprofiler problemlos verwenden und herausfinden, wo der meiste Speicher verwendet wird. Allerdings merke ich, dass das ursprüngliche Programm unter AQTime mehr wie 1 GB verwendet, während es profiliert wird.Wie verwendet man AQTime's Speicherzuordnung Profiler in einem Programm, das eine große Menge an Speicher verwendet?

Im Moment versuche ich Speicherverbrauch in einem Programm zu reduzieren, das 1,4 GB Speicher verwendet. Wenn ich es unter AQTime führe, dann benutzt das ursprüngliche Programm den ganzen 2GB Adressraum und stürzt ab. Ich kann natürlich eine kleinere Menge von Testdaten erfinden und abschätzen, wie die Speicherauslastung mit dem gesamten Datensatz skaliert wird - aber der Grund, warum ich einen Profiler verwende, ist der Versuch, dieses Rätselraten zu vermeiden.

Ich habe bereits AQTime auf 'Sammelstapelinformationen - None' gesetzt, und alle Kontrollkästchen zum Überprüfen der Speicherintegrität sind ausgeschaltet, und ich habe versucht, den zu profilierenden Bereich auf ein paar Klassen zu beschränken, aber das tut nicht Es scheint nichts zu verbessern. Gibt es eine Möglichkeit, AQTime zu verwenden, die einen geringeren Overhead verursacht? Oder, wenn das nicht gelingt, welche anderen Ansätze gibt es, um eine gute Vorstellung von der verwendeten Erinnerung zu bekommen?

Die App ist in Delphi 2010 geschrieben und ich bin mit AQTime 6.

NB: Auf der Oberseite des erhöhten Speicherauslastung, eine ganze Menge nach unten, so dass die ganze Übung die App nicht nur verlangsamt unter AQTime läuft unmöglich aber unpraktisch auch :-P

Antwort

0

AFAIK der Zuordnung Profiler wird Speicherblockzuordnung unabhängig von Profiling Bereichen verfolgen. Profiling-Bereiche werden verwendet, um die Klasseninstanziierung zu verfolgen. Natürlich ist das Erstellen eines Arbeitsspeichers für eine Anwendung, die eine große Speichermenge zuweist, ein Problem. Sie können versuchen, das Flag LARGE_ADRESS_AWARE und den Boot-Schalter/3GB zu verwenden oder ein 64-Bit-System zu verwenden (solange Sie mindestens 4 GB haben) Speicher oder mehr). Sie können auch einen Snapshot des Anwendungsstatus erstellen, bevor er abstürzt, um zu sehen, wo der Speicher zugeordnet ist. Profiling braucht Zeit, Sie müssen es vielleicht für eine Weile laufen lassen.

Verwandte Themen