AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Arghl...Nachilfe in Speicher-Optimierung gesucht
Thema durchsuchen
Ansicht
Themen-Optionen

Arghl...Nachilfe in Speicher-Optimierung gesucht

Ein Thema von hackyie · begonnen am 13. Aug 2006 · letzter Beitrag vom 13. Aug 2006
 
hackyie

Registriert seit: 3. Nov 2003
50 Beiträge
 
#1

Arghl...Nachilfe in Speicher-Optimierung gesucht

  Alt 13. Aug 2006, 00:34
ich hab arge Speicherprobleme mit meinem Bilddatenbank- Projekt...und zwar bekomme ich einen out of memory error...naja, ich poste erst einmal ein wenig code:

Delphi-Quellcode:
SL := TStringList.Create;

  for i := 0 to pics.count-1 do
  begin
    setlength(myPics,length(myPics)+1);
    myPics[length(myPics)-1].fileName := pics[i];
    myPics[length(myPics)-1].category := cat;
    myPics[length(myPics)-1].discIndex := discID;
    myPics[length(myPics)-1].keywords := '';
    myPics[length(myPics)-1].date := Now;
    myPics[length(myPics)-1].folder := picfolders[i];

    // Bilddateien speichern
    oldName := folderName + picFolders[i] + pics[i];
    newName := folderName + picFolders[i] + inttostr(length(myPics)-1) + '.jpg';

    renameFile(oldName,newName);
    SL.Add(newName);
  end;
In der for-Schleife werden im Wesentlichen Bildnamen, die vorher aus Dateien gescannt wurden, in mein dynamisches array myPics[] geladen. In meinem Beispiel ist das Array leer und wird um 11.000 EInträge erweitert. Jeder EIntrag hat in etwa 540 Bytes Speicherbedarf --> 6 MB gesamt

Außerdem werden alle 11.000 Dateinamen + Pfad in die Stringlist SL geschrieben. Das ist nötig, weil anhand dieser Liste dann später das Archiv erstellt wird, eine Datei, in der alle 11.000 Bilder gepackt werden.

So nun kommt das Merkwürdige: Wenn ich nur das Array fülle, steigt der RAM-Bedarf um 6 MB an und alles ist gut. Wenn ich nur die Stringliste fülle, steigt der Bedarf kaum merklich an und auch alles ist gut. Aber wenn ich beides zusammen mache (so wie im code oben) dann steigt der Speicherbedarf sprungartig auf 30,40,50, 60 MB und dann...BANG ..out of memory.

- warum ist das so?

- generell: Mein Array wird ja zwangsläufig saugroß, wenn tausende Bilder in der DB sind. Warum bekomme ich memory errors, wozu gibt es ne Auslagerungsdatei...was kann ich anders machen, um auch große Mengen an Daten handhaben zu können?

Danke für die Hilfe...
Thread(this).Post(this).terminate;
  Mit Zitat antworten Zitat
 


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 00:34 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