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 1 von 3  1 23      
Benutzerbild von stahli
stahli

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

Systemressourcen erschöpft

  Alt 7. Mär 2009, 00:43
Hi,

ich habe eine komplexe Anwendung geschrieben (Turniersoftware) die zur Laufzeit dynamisch tausende Komponenten erzeugt (Spiele, Spieler, Satzergebnisse, Zeittafeln etc.), die Daten anzeigen und Bearbeitungen ermöglichen.

Im Moment gebe ich damit testweise ältere umfangreiche Turnierdaten eines großen Mannschaftsturniers ein und erhalte neuerdings immer wieder die Meldung "Systemressourcen erschöpft".

Kann mir jemand bei einem Lösungsansatz helfen? Im Moment habe ich noch keine wirkliche Idee woran das liegen kann

Die Anzahl der Handels schwankt immer etwas und war auch schon höher als zum Zeitpunkt der Fehlermeldung.
Evtl. hat das Problem auch mit einer Speicherfunktion auf die Festplatte zu tun...

Anbei zwei Screenshots des Systemmonitors.

Kann mir jemand einen Tip geben? Muss ich erzeugte Komponenten auf verdeckten Registerseiten oder nicht benötigte Formulare gleich wieder auflösen?

Danke
Stahli
Miniaturansicht angehängter Grafiken
aufzeichnen2_693.jpg   aufzeichnen1_108.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Systemressourcen erschöpft

  Alt 7. Mär 2009, 00:48
Gibst du auchnicht mehr bentugte Objekte auch wieder frei? Dies gilt auf für GDI Ressourcen.
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
 
#3

Re: Systemressourcen erschöpft

  Alt 7. Mär 2009, 01:21
Hmm, das kann ich schwer beantworten...

Ein Turnierprojekt ist so etwas ähnliches wie eine DFM. Die TUR-Datei wird geladen und die (massenweise) enthaltenen Datenkomponenten werden erzeugt und geladen.

Dann gibt es verschiedene sichtbare Komponenten, z.B. Designer und Listen, denen die Datenkomponenten zugewiesen werden. Diese erzeugen dann eine passende Anzahl sichbarer Komponenten, die die Daten anzeigen (siehe z.B. Spielerlisten im Bild).

Werden die Daten aufgelöst, werden auch "automatisch" die sichtbaren Komponenten entfernt. Das findet aber nicht statt, solange ich nur ein anderes Register oder Unterformular auswähle.

Wenn die Anzahl der gleichzeitig erzeugten Komponenten das Problem sein sollt könnte ich vielleicht wenigstens nicht gebrauchte Unterformulare auflösen oder Inhalte von ausgeblendeten Registern löschen...
Aber erst einmal würde ich gern genau wissen, wo das Problem genau steckt und wie ich eine "drohende Ressourcenüberschreitung" vielleicht vorher erkennen kann...
-> "Bitte schnell alles speichern, gleich knallts!" - oder so


Und GDI-Ressourcen kann ich im Moment noch nicht recht einordnen. Ach so, jeder Spieler verwaltet aicuh noch ein Bitmap.


Dannke schon mal!
Miniaturansicht angehängter Grafiken
aufzeichnen3_167.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Dunkel
Dunkel

Registriert seit: 26. Mär 2007
Ort: Klingenstadt
541 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Systemressourcen erschöpft

  Alt 7. Mär 2009, 01:40
Zitat von stahli:
Und GDI-Ressourcen kann ich im Moment noch nicht recht einordnen. Ach so, jeder Spieler verwaltet aicuh noch ein Bitmap.
Genau solche Bitmaps sind/beinhalten GDI-Ressourcen.

Hast Du schon mal FastMM (oder ähnliche Speicher-Profiler) mitlaufen lassen? Anhand deren Log kann man recht gut herausfinden, wo was nicht freigegeben wird.
Es ist zu wahr um schön zu sein...
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

Re: Systemressourcen erschöpft

  Alt 7. Mär 2009, 01:51
Nein, da habe ich mich noch nicht heran getraut.
Aber da muss ich dann wohl mal durch und sehen, ob ich damit zurecht komme...
  Mit Zitat antworten Zitat
Benutzerbild von Net7
Net7

Registriert seit: 22. Jun 2004
Ort: Lauenburg
161 Beiträge
 
Delphi 7 Professional
 
#6

Re: Systemressourcen erschöpft

  Alt 7. Mär 2009, 07:58
Zitat von stahli:
Dann gibt es verschiedene sichtbare Komponenten, z.B. Designer und Listen, denen die Datenkomponenten zugewiesen werden. Diese erzeugen dann eine passende Anzahl sichbarer Komponenten, die die Daten anzeigen (siehe z.B. Spielerlisten im Bild).

Werden die Daten aufgelöst, werden auch "automatisch" die sichtbaren Komponenten entfernt. Das findet aber nicht statt, solange ich nur ein anderes Register oder Unterformular auswähle.

Wenn die Anzahl der gleichzeitig erzeugten Komponenten das Problem sein sollt könnte ich vielleicht wenigstens nicht gebrauchte Unterformulare auflösen oder Inhalte von ausgeblendeten Registern löschen...
Aber erst einmal würde ich gern genau wissen, wo das Problem genau steckt und wie ich eine "drohende Ressourcenüberschreitung" vielleicht vorher erkennen kann...
-> "Bitte schnell alles speichern, gleich knallts!" - oder so

Wie erstellst du zb. die Strings oder Interger-Werte, zur Ansicht deiner Daten? Local oder Global? Ich hatte mal ein ähnliches Problem. Die Aufgabe meines Programm damals war, die Auswertung von ca. 160000 Zeilen IP-Ländercounts. Bei der Vergabe von zb. Stringlists auf localer Ebene hatte ich irgendwann auch Ressourcenmangel. Auf globaler Ebene nicht mehr.

Mfg Net7
Marko
So`ne Atombombe kann einem den ganzen Tag verderben!
Eine eigene DLL in C++ geschrieben wird meist ein Sklave für mein Delphi/Pascal.
  Mit Zitat antworten Zitat
mjustin

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

Re: Systemressourcen erschöpft

  Alt 7. Mär 2009, 08:09
Zitat von stahli:
Kann mir jemand einen Tip geben? Muss ich erzeugte Komponenten auf verdeckten Registerseiten oder nicht benötigte Formulare gleich wieder auflösen?
Um eventuelle Memory Leaks zu erkennen, kann man (afaik bei Delphi 2006 und höher) in der dpr Datei diese Zeilen einfügen. Dann wird eine Zusammenfassung beim Programmende angezeigt.

Delphi-Quellcode:
{$WARN SYMBOL_PLATFORM OFF}
   ReportMemoryLeaksOnShutDown := DebugHook <> 0;
{$WARN SYMBOL_PLATFORM ON}
Falls eine große Zahl nicht freigegebener Objekte angezeigt wird, kann man anhand der angezeigten Klassennamen versuchen, die Ursachen zu finden. Für detailliertere Fehlerprotokolle kann man FastMM4 direkt einbinden und die Codestellen automatisch auflisten lassen, an denen Objekte erzeugt wurden, die nicht freigegeben werden.
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
 
#8

Re: Systemressourcen erschöpft

  Alt 7. Mär 2009, 12:15
@Net7:
Die Daten sind vorwiegend als Eigenschaften in Objekten enthalten.

@mjustin:
Danke! D2006 bringt da ja schon einen eigenen Ansatz mit (siehe Bild).
Ich hätte nicht gedacht, dass mein Problem doch selbst gemacht ist - muss erst mal aufräumen!
Zumindest ist ein Lösung in Aussicht

Verstehe ich das richtig, dass FastMM oder EurekaLog dann darüber hinaus "nur" helfen, die Stelle im Quelltext leichter zu finden?


Danke schon mal für die GRO?E Hilfe!

Stahli
Miniaturansicht angehängter Grafiken
aufzeichnen4_215.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Systemressourcen erschöpft

  Alt 7. Mär 2009, 12:31
Systemressourcen sind aber kein Speicher (im MemoryManager),

aber die ganzen GDI-Objecte, welche z.B. in einem TBitMap gekapselt sind schon.

Wobei ~780 Bilder doch eigentlich nicht viel sind (dürften doch nicht viel mehr als 800 bis 4000 GDI-Objecte drin stecken und ich dachte soviel bekommt windows noch locker hin)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

Re: Systemressourcen erschöpft

  Alt 7. Mär 2009, 12:33
Zitat von stahli:
Danke! D2006 bringt da ja schon einen eigenen Ansatz mit (siehe Bild).
Ich hätte nicht gedacht, dass mein Problem doch selbst gemacht ist - muss erst mal aufräumen!
Oh ja, bei über 700 nicht aufgeräumten Bitmaps und Bitmapimages musst du dich nicht wundern, wenn die Systemressourcen irgendwann erschöpft sind.

Zitat von stahli:
Verstehe ich das richtig, dass FastMM oder EurekaLog dann darüber hinaus "nur" helfen, die Stelle im Quelltext leichter zu finden?
Richtig. Die zeigen dir an wo die entsprechenden Objekte erstellt wurden.

Aber das siehst du ja vielleicht auch selbst bei dir. Entscheidend könnte z.B. sein, wenn du TBitmap castest um es irgendwo als Pointer zu speichern. Denn dabei geht ggf. der Referenzzähler flöten und es wird nicht mehr aufgeräumt.
Das wären neben den Standardfehlern weitere Fallstricke.

// EDIT:
Zitat von himitsu:
aber ~780 ist doch eigentlich nicht viel (dürften doch nicht viel mehr als 4000 GDI-Objecte drin stecken und ich dachte soviel bekommt windows noch locker hin)
Naja, das werden ja ggf. noch mehr, wenn das Programm länger läuft.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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:45 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