Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: "Nicht genügend Arbeitsspeicher" ?!?

  Alt 14. Sep 2012, 13:18
Win64 hat eine etwas andere Speicherverwaltung und außerdem haben sich einige System-DLLs verändert, womit diese auch noch etwas mehr RAM belegen können.
Allein schon die größeren Dateien vrauchen zwar nicht mehr physischen RAM, aber im virtuellen Arbeitsspeicher wird dennoch mehr Platz belegt.

Wie sah denn die Speicherauslastung auf dem alten System aus?
Waren da die 2 GB auch schon fast randvoll?

Du mußt dir unbedingt klar machen, daß es einen Unterschied zwischen physischem RAM, Auslagerungsdatei (Pagefile) und virtuellem Speicher gibt.
Im System sind vielleich x GB an RAM verbaut und dazu kommt dann noch die Auslagerungsdatei.
Somit hat man zusammen x GB für alle Programme zur Vergügung.

Dein Programm besitzt aber bei 32 Bit nur 2 GB virtuellem RAM (3 GB, wenn man eine gewisse Option aktiviert, im Windows und in der EXE).
Maximal kann von den 2 GB aber nur soviel belegt werden, wie physisch (RAM+Pagefile) zur Verfügng stehen (frei sind).

In diesen 2 GB gibt es dann noch Bereiche, wo man nichts ablegen kann (die ersten 64 KB) und dann liegen auch noch überall die gemappten Teile der DLLs und der EXE (z.B. Programmcode und Resourcen), welche meistens direkt von der Festplatte im virtuellen Speicher abgebildet sind, aber keinen physischen RAM belegen (das selbe gilt für MMF) und dann können Programme gleiche DLLs/EXEn sich teilen, womit diese nur einmal für Alles im physischem RAM liegen und nur in den Virtuellen reingemappt werden.

Und der Restliche virtuelle Speicher ist quasi dich. Aber auch da kann man nur speicher reservieren, wenn man ein Stückchen findet, das groß genug ist.
Will man z.B. ein Array mit 1 GB erstellen, dann braucht man dafür einen Speicherblock, welcher zusammenhängend mindestens 1 GB groß ist, was nicht so einfach wird, wenn wild verteilt sonstwas darin rumliegt.
$2B or not $2B

Geändert von himitsu (14. Sep 2012 um 13:27 Uhr)
  Mit Zitat antworten Zitat