Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Unerwarteter OutOfMemory-Fehler (https://www.delphipraxis.net/155055-unerwarteter-outofmemory-fehler.html)

blablab 8. Okt 2010 09:59

AW: Unerwarteter OutOfMemory-Fehler
 
@Luckie
Das versteh ich ehrlichgesagt nicht, was für Symptome meinst du?

Luckie 8. Okt 2010 10:01

AW: Unerwarteter OutOfMemory-Fehler
 
Dass dir der Speicher ausgeht. Ich bin mir ziemlich sicher, dass du Speicher nicht wieder sauber freigibst oder andere Speicherlücken hast.

Sir Rufo 8. Okt 2010 10:07

AW: Unerwarteter OutOfMemory-Fehler
 
Ich würde mal eher vermuten, dass er hier die Grenzen von Delphi (wegen rein 32bit) sprengt.

Wenn er alle Daten im Speicher halten will (oder muss), dann ist er auf der 32bit-Ebene leider fehl am Platz und somit hat sich dann auch Delphi erledigt.

Also Konzept überdenken oder Programmiersprache/Compiler (und natürlich BS) wechseln.

Das ist Ursachen-Bekämpfung alles andere ist Symptom-Behandlung

blablab 8. Okt 2010 10:15

AW: Unerwarteter OutOfMemory-Fehler
 
Ne, das passt schon. Die Anwendung braucht 10MB, dann drück ich auf einen Knopf, der Speicherbedarf steigt auf 2GB an (das ist nur ein künstlicher Extremfall, im normalfall bleibt es eher bei wenigen 100MB oder so) und wenn die Berechnung fertig ist bleiben wieder 10MB Speicherbedarf übrig...
[Edit]Und ich allokier wirklich 2GB Speicher, es ist also keine Fragmentierung

Luckie 8. Okt 2010 10:18

AW: Unerwarteter OutOfMemory-Fehler
 
Wie lädst du denn die Daten.

blablab 8. Okt 2010 10:45

AW: Unerwarteter OutOfMemory-Fehler
 
Mit TFileStream. Aber das ist doch nicht wichtig. Ich speicher die halbe Festplatte im Ram zwischen, deshalb brauch ich so viel Speicher und deshalb möchte ich eine Maximalgrenze damit es keine OutOfMemory-Exception gibt.

Bernhard Geyer 8. Okt 2010 10:53

AW: Unerwarteter OutOfMemory-Fehler
 
Zitat:

Zitat von blablab (Beitrag 1054457)
[Edit]Und ich allokier wirklich 2GB Speicher, es ist also keine Fragmentierung

Du vergisst da jeder Prozess unter Windows zwangsweise einen Rattenschwanz von DLL geladen bekommt. Sei es nun die DLLs die man selbst benötigt (user32.dll, ....) als auch die ganzen DLL's die irgendwelche Anwendungen/Virenscanner/... denken das man benötigen würde.
Schau dir doch mal mit einem Prozess Explorer an was selbst ein einfaches "Hello World" Programm so für DLL's verpasst bekommt.

Luckie 8. Okt 2010 10:54

AW: Unerwarteter OutOfMemory-Fehler
 
Du bist sehr sparsam mit Informationen. Warum die halbe Festplatte zwischenspeichern? Was machst du mit den Daten und wie machst du das?

blablab 8. Okt 2010 12:04

AW: Unerwarteter OutOfMemory-Fehler
 
Das Programm sucht nach Datei-Duplikaten in einem bestimmten Ordner. Wenn 2 Dateien dieselbe Größe haben, vergleicht er die Dateien um dann zu entscheiden ob sie gleich sind oder nicht. Wenn mehrere Dateien dieselbe Größe haben, muss jede mit jeder verglichen werden. Deshalb behalte ich in diesem Fall die Datei oder ein Teil der Datei im Speicher damit die zukünftigen Vergleiche schneller gehen.
Wenn man als Ordner die ganze Festplatte auswählt und viel Dateien mit gleicher Größe hat, dann kann der verwendete Speicher ziemlich ansteigen. Und in diesem Fall möchte ich dann auf das Zwischenspeichern verzichten bevor es zum OutOfMemory kommt.

Sir Rufo 8. Okt 2010 12:09

AW: Unerwarteter OutOfMemory-Fehler
 
Zitat:

Zitat von blablab (Beitrag 1054506)
Das Programm sucht nach Datei-Duplikaten in einem bestimmten Ordner. Wenn 2 Dateien dieselbe Größe haben, vergleicht er die Dateien um dann zu entscheiden ob sie gleich sind oder nicht. Wenn mehrere Dateien dieselbe Größe haben, muss jede mit jeder verglichen werden. Deshalb behalte ich in diesem Fall die Datei oder ein Teil der Datei im Speicher damit die zukünftigen Vergleiche schneller gehen.
Wenn man als Ordner die ganze Festplatte auswählt und viel Dateien mit gleicher Größe hat, dann kann der verwendete Speicher ziemlich ansteigen. Und in diesem Fall möchte ich dann auf das Zwischenspeichern verzichten bevor es zum OutOfMemory kommt.

Hast du schon mal was von Hash gehört?


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:38 Uhr.
Seite 2 von 3     12 3      

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