![]() |
Unbenutzte Objekte erkennen
Hallo,
ich habe ein generelles Problem, für das ich noch keine Lösung gefunden habe :( Und zwar habe ich ein "großes" Programm geschrieben, das innerhalb einer Schleife viele Objekte erzeugt und auch die meisten wieder freigibt - die meisten, aber nicht alle! Das sehe ich daran, dass nach jedem Schleifendurchlauf der Speicher, den das Programm belegt, größer wird. Nun möchte ich gerne wissen, welche Objekte ich vergessen habe freizugeben, so dass sie am Ende der Schleife noch belegt sind. Das im Programmcode durchzuforsten und für alle Programmzweige zu untersuchen, erscheint mir zu aufwendig. Da ich mit der Suchfunktion hier noch kein Ergebnis bekam, stelle ich hier nun meine Frage: Gibt es eine Möglichkeit, sich entweder in der Borland-IDE oder per Programmcode solche eigenen erzeugten und nicht wieder freigegebenen Objekte anzeigen zu lassen? Vielen Dank für Eure Antworten! |
Re: Unbenutzte Objekte erkennen
Merk dir die Objekte
|
Re: Unbenutzte Objekte erkennen
Einfach FastMM einbinden, TD32-Debug-Infos aktivieren und am Programmende vom erzeugten Logfile auf den Erstellungspunkt der nicht mehr freigegeben Objekt hingewiesen werden.
|
Re: Unbenutzte Objekte erkennen
Letzteres kann ich auch nur empfehlen, besser Infos wirst Du IMHO kaum bekommen.
|
Re: Unbenutzte Objekte erkennen
Zitat:
du kannst ja eine Prozedur DeleteAllObjects schreiben, in die du alle aufnimmst, und die du am Ende aufrufst. Ich benutze oft Objekte, die nur bei Bedarf erzeugt werden (z.B. Datenverbindungen oder V24-Schnittstellen), im finalen Zertrümmerer kann man ja abfragen "if O1 <> nil then O1.Delete" oder sichere Verfahren wie FreeAndNil verwenden. Natürlich darf man da auch nicht vergessen, ein neu programmiertes Objekt einzufügen! Gruss Reinhard |
Re: Unbenutzte Objekte erkennen
Zitat:
Zitat:
|
Re: Unbenutzte Objekte erkennen
Es gäbe auch die Möglichkeit "Free" zu vergessen.
Barry Kelly schreib vor einiger Zeit einen ![]() Ich hatte ein Windowsservice System, dass damit lange Zeit absolut sorgenfrei lief, und es enthielt fast kein Free. *g* Und es läuft nur deshalb nicht mehr, weil ich es irgendwann durch eine .Net-basierte Lösung ersetzt habe. |
Re: Unbenutzte Objekte erkennen
Zitat:
Da nun am Schleifenende nicht alle Listen lösche kann, sondern teilweise nur die Objekte darin und da ich offensichtlich nicht alle Objekte lösche, brauche ich eben so ein Tool. Ich werde am Wochenende mal Euren Vorschlag mit FastMM ausprobieren. Danke nochmals! |
Re: Unbenutzte Objekte erkennen
Ein anderes Tool wäre noch
![]() |
Re: Unbenutzte Objekte erkennen
Zitat:
Danke für Eure Tipps! |
Re: Unbenutzte Objekte erkennen
Zitat:
Hhmmm? Wie der OP vorher geschrieben hat, werden die Objekte teilweise freigegeben und teilweise nicht. Eine Objektliste merkt aber nicht, daß ein Objekt freigegeben wurde. Der Zeiger ist immer noch vorhanden. Wenn nun die Objektliste versucht ein Objekt freizugeben, welches gar nicht mehr vorhanden ist, dann dürfte es krachen. |
Re: Unbenutzte Objekte erkennen
Ich werfe einfach mal ein Wort in den Raum was dir alle Sorgen abnimmt... Keine Referenz kein Objekt:
"Interfaces" Gruß reli |
Re: Unbenutzte Objekte erkennen
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Also habe ich eine zusätzliche Liste erzeugt, die nur dazu da ist, die Objekte zu listen und am Ende wieder freizugeben. Nun habe ich laut FastMM nur noch 2 Leaks übrig, von denen ich aber nicht wieß, wie ich sie beseitigen kann; möglicherweise ist ja auch noch ein Bug in den Standard-Modulen? Kurzfassung: Zitat:
Danke für Eure Beiträge! :thumb: |
Re: Unbenutzte Objekte erkennen
Hab grad das selbe Problem bei mir festgestellt - hier steht die Lösung:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:03 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 by Thomas Breitkreuz