AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Freigabe von Objekten zeitaufwändig?
Thema durchsuchen
Ansicht
Themen-Optionen

Freigabe von Objekten zeitaufwändig?

Ein Thema von mjenke · begonnen am 9. Aug 2010 · letzter Beitrag vom 31. Aug 2010
Antwort Antwort
mjenke

Registriert seit: 28. Mär 2003
Ort: Bonn
131 Beiträge
 
#1

AW: Freigabe von Objekten zeitaufwändig?

  Alt 9. Aug 2010, 15:35
Hi, habe mal die Debug-Informationen ausgeschaltet, aber das ändert am Laufzeitverhaltn nichts.

@himitsu: Wie ist die Frage zu verstehen? Unterobjekte werden in einem Array Of TObject gespeichert.
Matthias Jenke
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Freigabe von Objekten zeitaufwändig?

  Alt 9. Aug 2010, 15:38
Dein Programm braucht also 70-80 Minuten um sich zu beenden?

Dann kann da aber eigentlich irgendwas nicht stimmen... Eventuell solltest du dann deinen Code überdenken...
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.829 Beiträge
 
Delphi 12 Athens
 
#3

AW: Freigabe von Objekten zeitaufwändig?

  Alt 9. Aug 2010, 15:58
OK, und wie werden dabei die Unterobjekte freigegeben?
Es wird doch nicht etwa jedes Objekt einzeln freigegeben, womöglich auch noch beginnend vom Anfang des Arrays und dann ständig jedes Objekt aus dem Array entfernt, die restlichen Einträge hochkopiert und dabei das Array stückchenweise verkleinert?

Ohne zu wissen was dein Code macht, kann dir keiner helfen.

PS: bei meinem himXML hatte ich anfangs auch diesen Effekt, bis ich das Freigeben umgestellt hatte > alle Kind-Objekte im Destructor freigeben und dann das Array komplett löschen.

PSS: Warum nutzt du keine TObjektList?
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 9. Aug 2010 um 16:03 Uhr)
  Mit Zitat antworten Zitat
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
542 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Freigabe von Objekten zeitaufwändig?

  Alt 9. Aug 2010, 16:01
@himitsu: Wie ist die Frage zu verstehen? Unterobjekte werden in einem Array Of TObject gespeichert.
Objekte in einer TObjectList würden Z.B. beim freigeben der Liste automatisch freigegeben.
Sind das visuelle Objekte?
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Freigabe von Objekten zeitaufwändig?

  Alt 9. Aug 2010, 16:14
Sind eventuell WideStrings in den Objekten? Ich habe die Erfahrung gemacht, dass das Freigeben von WideStrings ewig dauert.

Ansonsten: Ist ReportMemoryLeaksOnShutdown eingeschaltet? Wenn ja, schalte es mal aus, und schau, ob es dann schneller ist.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.829 Beiträge
 
Delphi 12 Athens
 
#6

AW: Freigabe von Objekten zeitaufwändig?

  Alt 9. Aug 2010, 16:53
ReportMemoryLeaksOnShutdown prüft nur am Ende des Programmes nach, ob noch was im Speichermanager liegt undzwar kurz vor Freigabe des Speichermanagers ... zu diesem Zeitpunkt wurden schon alle Objekte freigegeben (abgesehn von den Speicherleckt und diese würden dann auch angezeigt) ... dieses hat also keine Auswirkung zu diesem Zeitpunkt.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Freigabe von Objekten zeitaufwändig?

  Alt 9. Aug 2010, 17:37
ReportMemoryLeaksOnShutdown prüft nur am Ende des Programmes nach, ob noch was im Speichermanager liegt undzwar kurz vor Freigabe des Speichermanagers ... zu diesem Zeitpunkt wurden schon alle Objekte freigegeben (abgesehn von den Speicherleckt und diese würden dann auch angezeigt) ... dieses hat also keine Auswirkung zu diesem Zeitpunkt.
Oft werden Objekte aber beim Beenden des Programmes freigegeben, und es wirkt dann so, als würde dieser Vorgang lange dauern. Habe ich bei meinen Hashmap-Tests festgestellt, wo ich zwischenzeitlich mal zigtausend Memoryleaks hatte... (keine Sorge, jetzt sind es 0, falls jemand die mal benutzen möchte )
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.829 Beiträge
 
Delphi 12 Athens
 
#8

AW: Freigabe von Objekten zeitaufwändig?

  Alt 9. Aug 2010, 17:40
Wenn es lange dauert, dann liegt es nicht an ReportMemoryLeaks, es sei denn es muß ein rießiger Report erstellt werden.

Aber wie gesagt, ohne nähere Kenntnis zu diesem Projekt/Code, kann man nur wild rumraten.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
NormanNG

Registriert seit: 1. Feb 2006
294 Beiträge
 
Delphi 2007 Professional
 
#9

AW: Freigabe von Objekten zeitaufwändig?

  Alt 9. Aug 2010, 17:49
Also ich habe durchaus die Erfahrung gemacht, das FastMM zum Beenden eines Programmes viel Zeit brauchen kann. Vor allem, wenn alle Debugging-Option aktiv sind. Dann werden u.U. alle Memoryblöcke auf korrekte Freigabe etc. geprüft und das kann - vor allem bei vielen zuvor benutzten Objekten - etwas dauern... unabhängig davon, ob der Code noch Fehler hat oder nicht.

Versuch es doch einfach mal FastMM mit komplett deaktivierten Debugoptionen einzubinden.
Gruß
Norman
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:53 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