![]() |
Erstellte Objekte zur Laufzeit ermitteln?
Hallo, gibt es eine Möglichkeit erstellte Objekte zur Laufzeit zu ermitteln?
Ich habe hier das Problem, dass bei einer Aktion der verwendete Speicher der Anwendung unfassbar steigt. Es geht um mehrere Drucke, die mit Quickreport erzeugt werden in einer historisch gewachsenen Unit. Wenn ich das Programm beende, wird der Speicher wieder freigegeben. Daher kann ich das problem auch nicht mit Hilfe der Leak Detection(MadExcept) ermitteln... Es ist aber erforderlich, dass der Speicher nach dem Druck direkt wieder freigegeben wird. ich finde aber nicht, an welcher Stelle das Problem ist. Daher wäre eine Liste hilfreich, die sämtliche erzeugten Objekte zur Laufzeit anzeigt, während ich mich an einem Breakpoint befinde. |
AW: Erstellte Objekte zur Laufzeit ermitteln?
Zitat:
![]() |
AW: Erstellte Objekte zur Laufzeit ermitteln?
Zitat:
und es ist nicht möglich mit 100%-iger Sicherheit Objekte im Speicher zu identifizieren. Bei TForms gibt es in Screen eine Liste aller Forms, wo man auch via Parent/Owner alle Komponenten auf den Forms finden kann, und bei einigen Klassen gibt es eigene Listen, aber global für "Alles" ... nein. Man kann zwar den Arbeitsspeicher durchgehn und schauen ob etwas ein Objekt sein "könnte", aber man muß da mit False-Positivs leben. > es lässt sich nur sagen "in dem Pointer ist kein Objekt" (nach Bufferoverflow, kann das auch "futsch" sein) > aber zu 100% kann man nicht sagen "ja, es ist ein Objekt", denn Reste eines alten/freigegebenen Objekts oder was Anderes, was zufällig der geprüften Struktur entspricht, das kann auch was Anderes oder garnichts mehr sein. Im Delphi ist FastMM drin > ![]() aber im "großen" FastMM gibt es noch viel mehr Möglichkeiten. ![]() und zusätzlich noch Eurekalog, MadExcept, ... PS:
Delphi-Quellcode:
in einem Timer ist zwar sowas wie ein Laufzeit-Speicherleck,
for var i := 0 to 1000 do TEdit.Create(Self);
aber z.B. ReportMemoryLeaksOnShutdown wird es nicht finden, da durch den Owner die vielen Edits "vorher" aufgeräumt werden, beim Beenden der Anwendung (beim Freigeben der Form). |
AW: Erstellte Objekte zur Laufzeit ermitteln?
*gelöscht*
|
AW: Erstellte Objekte zur Laufzeit ermitteln?
Hallo,
Zitat:
|
AW: Erstellte Objekte zur Laufzeit ermitteln?
Ja, spätestens dann.
Zitat:
* vor der Leckprüfung (siehe das Beispiel mit dem TEdit) * oder danach (ganz am Ende durch Windows, wo FastMM und Co. vorher noch nachsehen kann) Aber auch mit dem Davor ist so Einiges möglich. Zitat:
* ein Snapshot, dann eine Aktion ausführen (Drucken), und anschließend prüfen |
AW: Erstellte Objekte zur Laufzeit ermitteln?
Zitat:
|
AW: Erstellte Objekte zur Laufzeit ermitteln?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz