AGB  ·  Datenschutz  ·  Impressum  







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

Systemressourcen erschöpft

Ein Thema von stahli · begonnen am 7. Mär 2009 · letzter Beitrag vom 9. Mär 2009
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von himitsu
himitsu

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

Re: Systemressourcen erschöpft

  Alt 7. Mär 2009, 12:37
keine Sorge ... TBitMap ist ein Object und die haben ja keine Referenzzählung (wobei man diese als Objekte auch eigentlich nicht nach Pointer casten muß, um sie irgendwo abzuspeichern/abzulegen)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.589 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: Systemressourcen erschöpft

  Alt 7. Mär 2009, 13:08
Zitat von himitsu:
keine Sorge ... TBitMap ist ein Object und die haben ja keine Referenzzählung
Ja, dafür müssen sie explizit freigegeben werden.
Ich hatte irgendwie gerade Strings im Hinterkopf als ich das geschrieben habe.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#13

Re: Systemressourcen erschöpft

  Alt 7. Mär 2009, 13:16
Ich habe den Übeltäter

Delphi-Quellcode:
procedure TDPerson.ClearPicture;
begin
  if Assigned(FPicture) then // neu eingeführt
  begin
    FreeAndNil(FPicture);
    FPicture := TBitmap.Create;
    DataChanged;
  end;
end;
Um Bilder "zu löschen" habe löse ich das Bitmap auf und erzeuge ein neues (Bitmap.Clear gibt es ja nicht).
Diese Methode wurde auch aufgerufen bevor das Bitmap das erste mal erzeugt wurde
Jetzt schließe ich das mit Assigned aus.

Das Hauptproblem scheint geklärt

Danke für die Hilfe!

Stahli
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#14

Re: Systemressourcen erschöpft

  Alt 7. Mär 2009, 14:02
Wen du so vile Unterformulare hast, würde ich die auch nicht beim Programmstart alle automatisch erzeugen lassen, sondern zur Laufzeit dynamisch erzeugen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: Systemressourcen erschöpft

  Alt 7. Mär 2009, 14:05
Ja, das mache ich auch.
Ich löse sie dann allerdings nicht wieder auf, da sie immer mal wieder gebraucht werden.
Für den Notfall merke ich mir das als Option vor.
Nach Klärung des Bitmap-Problems läuft allerdings nun alles perfekt!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#16

Re: Systemressourcen erschöpft

  Alt 7. Mär 2009, 14:07
Zitat von stahli:
Ich löse sie dann allerdings nicht wieder auf, da sie immer mal wieder gebraucht werden.
Für den Notfall merke ich mir das als Option vor.
Das würde ich dann allerdings als unsauber betrachten. Wenn du sie schon dynamisch erzeugst, dann mach es auch richtig und gib sie wieder frei, wenn sie geschlossen werden.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#17

Re: Systemressourcen erschöpft

  Alt 7. Mär 2009, 14:16
Kurz zu meinem Konzept dazu:

Die Unterformulare diesen der Datenbearbeitung von Komponenten.
VCustom.FormEdit

Die Methode VCustom.Select öffnet weist der Eigenschaft je nach Situation ein Bearbeitungsformular zu, positioniert und öffnet dieses.
Wurde das betreffende Bearbeitungsformular bisher noch nicht benutzt wird es erzeugt (Eigentümer ist die Application).

Das Formular schließt sich i.d.R. automatisch, wenn es deaktiviert wird.

Aufgelöst wird es, wenn die Application beendet wird.

Die Unterformulare werden imnmer wieder benötigt, daher löse ich sie nicht sofort auf und das führt ja (offenbar) auch nicht zu Problemen...
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#18

Re: Systemressourcen erschöpft

  Alt 7. Mär 2009, 15:38
Zitat von stahli:
@mjustin:
Danke! D2006 bringt da ja schon einen eigenen Ansatz mit (siehe Bild).
Das ist der Leak Report Bildschirm von FastMM4, dem (Open Source) Memory Manager, der von CodeGear in Delphi integriert wurde. Also eigentlich nix eigenes, sondern eher etwas <borg>assimiliertes</borg> - und für mich eine der besten Neuerungen an Delphi seit Version 7.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#19

Re: Systemressourcen erschöpft

  Alt 9. Mär 2009, 17:05
Also ich habe jetzt FastMM4 installiert und nutze den FullDebugMode.

So habe ich noch einige weitere Fehler gefunden, bei denen ich über Referenzen auf bereits aufgelöste Objekte deren Methoden aufgerufen habe.
Das habe ich vorher gar nicht bemerkt!

Es ist zwar (auch mit dem Textreport) nicht einfach, die betreffenden Fehler aufzuspüren, aber man erhält ein paar gute Anhaltspunkte.

Es ist also bei komplexeren Programmen wohl unbedingt sinnvoll, FastMM oder Ähnliches zu verwenden. Wäre natürlich auch nicht verkehrt, wenn Delphi so eine Speicherkontrolle selbst durchführen würde.

Welche Alternativen gibt es zu FastMM. Was sind die Vor- und Nachteile?

Stahli
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#20

Re: Systemressourcen erschöpft

  Alt 9. Mär 2009, 17:11
Zitat von stahli:
Es ist zwar (auch mit dem Textreport) nicht einfach, die betreffenden Fehler aufzuspüren, aber man erhält ein paar gute Anhaltspunkte.
Hast Du TD32-Debug-Infos aktiv?

Zitat von stahli:
Wäre natürlich auch nicht verkehrt, wenn Delphi so eine Speicherkontrolle selbst durchführen würde.
Hat es doch jetzt
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 19:06 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