"Arbeitsspeicher" hat absolut nichts zu sagen.
Klar, wenn
RAM+Auslagerungsdatei voll sind, dann schon, aber die Grenze ist selten Erreicht und leicht erweiterbar (größere Auslagerungsdatei).
Die Fragmentierung dieses Speichers ist auch total irrelevant, da fast alles verschiebbar ist.
Hier steht ein kleiner Rechner mit 63 Kernen und 98 GB RAM (40 GB Frei), aber das sag nicht aber auch garnichts aus, darüber was ein Programm Prozess nutzen kann.
Der
virtuelle Speicher der Anwendung ist das Wichtige.
Der Code schaut/probiert einfach nur, was sich wirklich als Speicher reservieren lässt.
In einem Testprogramm, wo sonst nichts drin läuft und das auch grad eben erst gestartet wurde, ist das Ergebnis schnell mal anders, also wenn ein Programm schon 'nen paar Minuten/Stunden/Tage lief und wo auch schon bissl mehr drin abgeht und wieviel vorher auch schon gearbeitet wurde.
Und das was der Taskmanager anzeigt, sagt auch nicht viel aus, vor allem nicht das von der standardmäßig angezeigten Spalte "Arbeitsspeicher".
"Zugesichertet Speicher" wäre schon besser, aber schon bei der nachfolgenden Demo wirst dich bestimmt selbst wundern, dass die angezeigten Werte so nicht stimmen können. (nichtmal 3 MB)
99000*5000 ergibt bei 24 Bit eine 1,4 GB kleine BMP-Datei.
Delphi-Quellcode:
program Project2;
uses
SysUtils, Graphics;
begin
with TBitmap.Create do begin
SetSize(99000, 5000);
{for var X := 0 to Width-1 do
for var Y := 0 to Height-1 do
Canvas.Pixels[X, Y] := Random($FFFFFF);}
while True do
Canvas.Pixels[Random(Width), Random(Height)] := Random($FFFFFF);
end;
Sleep(99999);
end.