AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Unbenutzte Objekte erkennen

Ein Thema von bernie110 · begonnen am 6. Sep 2008 · letzter Beitrag vom 6. Nov 2008
Antwort Antwort
Seite 1 von 2  1 2      
bernie110

Registriert seit: 13. Sep 2004
Ort: Uetersen
27 Beiträge
 
Delphi XE6 Professional
 
#1

Unbenutzte Objekte erkennen

  Alt 6. Sep 2008, 17:11
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!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Unbenutzte Objekte erkennen

  Alt 6. Sep 2008, 17:13
Merk dir die Objekte
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Unbenutzte Objekte erkennen

  Alt 6. Sep 2008, 17:14
Einfach FastMM einbinden, TD32-Debug-Infos aktivieren und am Programmende vom erzeugten Logfile auf den Erstellungspunkt der nicht mehr freigegeben Objekt hingewiesen werden.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Unbenutzte Objekte erkennen

  Alt 6. Sep 2008, 17:18
Letzteres kann ich auch nur empfehlen, besser Infos wirst Du IMHO kaum bekommen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#5

Re: Unbenutzte Objekte erkennen

  Alt 6. Sep 2008, 17:23
Zitat von bernie110:
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!
Hallo,

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
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Unbenutzte Objekte erkennen

  Alt 6. Sep 2008, 19:18
Zitat von Reinhard Kern:
du kannst ja eine Prozedur DeleteAllObjects schreiben,
Zitat von Reinhard Kern:
Natürlich darf man da auch nicht vergessen, ein neu programmiertes Objekt einzufügen!
Oder besser gleich alle Objekte in eine TObjectList aufnehmen, und diese Liste einfach am Ende freigeben. Die ObjectList hat die Funktionalität, beim Freigeben alle enthaltenen Objekte mit freizugeben.
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Unbenutzte Objekte erkennen

  Alt 6. Sep 2008, 19:50
Es gäbe auch die Möglichkeit "Free" zu vergessen.
Barry Kelly schreib vor einiger Zeit einen MM, der den Boehm Garbage Collector für C/C++ in Delphi nutzbar macht.
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.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
bernie110

Registriert seit: 13. Sep 2004
Ort: Uetersen
27 Beiträge
 
Delphi XE6 Professional
 
#8

Re: Unbenutzte Objekte erkennen

  Alt 12. Sep 2008, 05:44
Zitat von Jelly:
Zitat von Reinhard Kern:
du kannst ja eine Prozedur DeleteAllObjects schreiben,
Zitat von Reinhard Kern:
Natürlich darf man da auch nicht vergessen, ein neu programmiertes Objekt einzufügen!
Oder besser gleich alle Objekte in eine TObjectList aufnehmen, und diese Liste einfach am Ende freigeben. Die ObjectList hat die Funktionalität, beim Freigeben alle enthaltenen Objekte mit freizugeben.
Die TObjectList nutze ich sehr intensiv an vielen Stellen im Programm Und diese Listen sind auch noch geschachtelt...
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!
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#9

Re: Unbenutzte Objekte erkennen

  Alt 12. Sep 2008, 06:22
Ein anderes Tool wäre noch Eurekalog.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
bernie110

Registriert seit: 13. Sep 2004
Ort: Uetersen
27 Beiträge
 
Delphi XE6 Professional
 
#10

Re: Unbenutzte Objekte erkennen

  Alt 12. Okt 2008, 18:49
Zitat von bernie110:
[...] Ich werde am Wochenende mal Euren Vorschlag mit FastMM ausprobieren.
Na ja, ich habe es erst jetzt geschafft, FastMM4 auzuprobieren und einzusetzen. Nach anfänglichen Schwierigkeiten, das Output-Textfile zu erzeugen (die dll-Datei muss im Application-Ordner vorhanden sein!), bin ich jetzt dabei, herauszufinden, wo die vielen Objekte, die noch belegt sind, erzeugt werden und wie ich sie passend dazu wieder löschen kann.

Danke für Eure Tipps!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz