Announcement

Collapse
No announcement yet.

Anzeigen der Objekte

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Anzeigen der Objekte

    Kann mir der Debugger die zur Laufzeit erstellten Objekte und ihre größe anzeigen?
    Die objekt addresse wird nur in einer TList gespreichert!
    Das soll dazu diehnen das ich sehen kann ob alle Objekte richtig entfernt werden! Wenn man z.B. Form.Free; macht zeigt der debugger ja leider nicht mehr an welchen wert Form hat, bzw. ob das Objekt wirklich aus dem Speicher entfernt wurde!

    Grund
    Ich hab eine Anwendung die eigentlich nur ein TMainMenu, 2 Panel und eine TListBox enthält! Diese ist im Speicher 3.5MB Groß!
    Im Hintergrund arbeiten noch 2 Units die Dynamisch DLLs laden und ein Menü auf dem Panel anzeigen!
    Die 3.5MB sind gleich nach dem Programmstart ohne das eine DLL geladen wurde!!!!! Es werden lediglich zwei weitere Panel erzeugt!

    Bye

    Marcel Schmied

  • #2
    Hallo,

    unter Win32 steht Dank dem Paging für jeden Prozess unabhängig vom tatsächlich vorhandenen RAM ein Adressbereich von 4 GByte (!) zur Verfügung. Dabei unterscheidet Win32 zwischen <i>Uncommitted Memory</i> (virtueller Speicher) und <i>Committed Memory</i> (reale Zuordnung zum physischen RAM). Jede Anwendung kann ohne jede Folgen hunderte MByte RAM Uncommitted Memory anfordern, ohne dabei RAM zu vergeuden.

    Ich würde daher nachsehen, um welche Speicher-Art es sich in diesem Fall konkret handelt: <br>
    a) Delphi mit dem Parameter <b>/hm</b> starten, der aktuelle Verbrauch wird in der Titelzeile von Delphi angezeigt <br>
    b) Im eigenen Programm den Delphi-Speichermanager über <b>AllocMemCount</b> und <b>AllocMemSize</b> regelmässig abfragen. Bei einem Differenzwert zur letzten Abfrage ist irgendwo ein Speicherleck. <br>
    c) Win32-API-Funktion <b>GetHeapStatus</b> aufrufen, das Betriebssystem liefert 10 Werte zurück. <br>
    d) In hartnäckigen Fällen den Delphi-Speichermanager patchen, indem <b>GetMemoryManager</b> und <b>SetMemoryManager</b> aufgerufen wird.

    In meinem Buch <i>Delphi Win32-Lösungen</i> sind für alle genannten Alternativen im Kapitel 7 <i>Win32-Speicherverwaltung</i> Beispielprojekte zu finden

    Comment

    Working...
    X