Einzelnen Beitrag anzeigen

Puhbaehr
(Gast)

n/a Beiträge
 
#1

RAM, virtuelle Adressierung, Auslagerungsdatei - reservieren

  Alt 7. Jun 2007, 13:11
Hallo DPler,

ich kenne den Unterschied zwischen physischem RAM, dessen virtuellen Speicheradressierung und dem virtuellen Speicher - der Auslagerungsdatei.
Ich nahm bisher an, dass der Taskmanger unter "virtueller Speicher" mir den Speicherverbrauch der Auslagerungsdatei zeigt.
In einem Programm wollte ich reelen Speicher anfordern (hab mit LocalAlloc und dyn./stat. Arrays rumprobiert). Aber im Taskmanger wurde nicht wie erwartet unter der Spalte "Speichernutzung" ein erhöhter Bedarf festgestellt sondern stattdessen in der Spalte "virtueller Speicher".

D.h. meine Daten liegen nun in der Auslagerungsdatei? Wie kann man das richtig verstehen?

Der Speicheroptimierer von TuneUp zeigt auch die Speichernutzung des physischen Speichers. Laut diesem werden die dyn. und stat. Arrays im physischem Speicher abgelegt. Die Speicherreservierung von LocalAlloc verschwindet eindeutig in der Auslagerugnsdatei.

Mit welchen Funktionen kann man vernünftig und schnell Speicher reservieren der sich auch tatsächlich im RAM befindet? Ich benötige für das Programm mehrere kleinere Speicherblöcke in denen ich Dateien von der Festplatte einlesen kann. Die Daten sollen dabei möglichst schnell greifbar für den Prozessor liegen damit dieser später schnell auf die Daten zugreifen und allesamt hintereinander ausführen kann.
Laut PSDK ist LocalAlloc langsamer. Ich denke mir wegen der Auslagerung.
Laut DP lassen sich mit VirtualAlloc nur größere Speicherbereiche reservieren und damit nicht allzuviele.

Andersrum: Gibt es auch Funktionen mit denen ich explizit festlegen kann "bitte in der Auslagerungsdatei reservieren". Ich möchte "unwichtige" Sachen wie Benutzereinstellungen nicht in den knappen RAM ablegen.

In einigen Beiträgen hab ich über Delphi-Funktionen wie GetMem gelesen die aber bei erst wieder mit dem Beenden des Programmes für Windows freigegeben werden. Da wurde auf die Windows-Funktionen (VirtualAlloc, LocalAlloc) hin verwiesen.

Ich wäre für ein paar Tipps dankbar.

Gruß,
Robert

EDIT: Ich werde auf VirtualAlloc zurückgreifen und in einem großen Speicherbereich mehrere Dateien ablegen und einfach auf die Blöcke referenzieren. Mal schauen ob das was wird.
  Mit Zitat antworten Zitat