![]() |
SetLength / Getmem / AllocMem out of memory Problem
Hallo,
in meinem Rechner sind, laut Taskmanager, rund 2 GByte verfügbarer Speicher frei . Wenn ich nun ein "Array of Byte" mittels SetLength, oder GetMem, oder AllocMem auf einen Wert > 800 MB setze, bekomme ich ein "EOutOfRessource" Problem, es funktioniert nur bis zu 750 MByte. Gibt es da eine Einschränkung von Delphi? Speicher ist ja da, aber irgendwie finde ich die Logik nicht, wieso es nicht funktioniert ... Hilfe ... |
Re: SetLength / Getmem / AllocMem out of memory Problem
Zitat:
|
Re: SetLength / Getmem / AllocMem out of memory Problem
bei 4 GB ist die Chance groß, daß alles nur in den ersten 2 GB liegt und man somit auch mal mehr zusammenhängenden Speicher bekommt.
Es gibt da nur noch eine Möglichkeit um einen größeren "zusammenhängenden" Speicher auch bei wenig freiem "Platz" hinzubekommen MMF (Memory Mappes Files) geht auch ohne Dateien, dabei reserviert man sich z.B. genügend Speicher bei Windows und mappt dann nur den gerade benötigten Teil in seinen Anwendunsspeicher. Ansonsten bleibt dier nur die Wahl einer anderen Speichermethode z.B. verkettete Liste statt Array oder eine Gruppe aus mehreren kleineren Arrays PS: Du kannst dir gern mit der Demo von dort mal deinen Speicher einiger Anwendungen anzeigen ![]() allerdings sind dort nur die gemappten Dateien angezeigt und es ist zwischendurch natürlich noch jede Menge anderer Speicher belegt, aber man sieht schonmal deutlich, daß es schwer ist da einen großen zusammenhängenden Speicher zu bekommen. |
Re: SetLength / Getmem / AllocMem out of memory Problem
Zitat:
|
Re: SetLength / Getmem / AllocMem out of memory Problem
man kann es doch auf 3,irgendwas GB erweitern (unter bestimmten Vorausetzungen)
|
Re: SetLength / Getmem / AllocMem out of memory Problem
Kann man, in der Boot.ini. Ist aber nicht zu empfehlen, weil schon 2GB für Windows ziemlich knapp bemessen sind. Aber davon mal abgesehen, ich hatte bisher noch nie den Fall, dass mir bei meinen Programmen der Speicher ausgegangen ist. Man sollte also noch mal das Konzept überdenken. Eventuell mit die Datei nur stückweise in den Speicher laden mit MemoryMappedFiles.
|
Re: SetLength / Getmem / AllocMem out of memory Problem
Zitat:
Zitat:
|
Re: SetLength / Getmem / AllocMem out of memory Problem
Zitat:
|
Re: SetLength / Getmem / AllocMem out of memory Problem
Vielen Dank für die Antworten/ausführlichen Ausführungen. Ich benötige im Prinzip nur x MByte/GByte, die ich ansprechen kann. Woher die kommen ist mir dabei egal :) Also bräuchte ich im Prinzip ein (Array of [Array .. MByte])?
"z.B. verkettete Liste statt Array" Was meinst Du genau damit? |
Re: SetLength / Getmem / AllocMem out of memory Problem
Zitat:
Dur wirst hier auf andere Datenstrukturen wie verkettete Listen oder ähnliches wechseln müssen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:31 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