Zitat von
gsh:
so würde ich das nicht sagen .. stell dir vor jede Anwendung würde fast 2GB Speicher verbrauchen. Also ich weiß nicht wie es dir geht aber ich hab keine 100GB
RAM in meinem Computer
Das macht nichts. Im Gegensatz zu DOS hat Windows ja einen virtuellen Speicher. Da hat jeder Prozess einen entsprechend großen Adressraum. Unter 32-Bit sind eben 4 GB bzw. nutzbare 2 GB. Die tatsächliche Größe des Arbeitsspeichrs spielt da erstmal keine Rolle, weil dann eben in die Auslagerungsdatei ausgelagert wird. Die Größe des Arbeitsspeichers spielt dann eher bei der Performance eine Rolle. Je größer der Arbeitsspeicher ist, desto weniger muss ausgelagert werden und Lese- bzw. Schreibzugriffe auf die Festplatte sind eben (noch) sehr langsam.
Nichtsdestotrotz ist der Adressraum pro Prozess eben begrenzt und man sollte schon dafür sorgen, dass nicht mehr benötigter Speicher wieder freigegeben wird. Es geht ja nicht immer nur um den absoluten frien Speicher, sondern auch um zusammenhängenden Speicher. Wenn ich ein dynamisches Array initialisiere und nicht genug zusammenhängender Speicher alloziiert werden kann, ist auch Ende. Und da ist es egal, wie groß der Adressraum ist. Wenn bei 64-Bit der Speicher ungünstig belegt wird, kann es auch da passieren, dass nicht genug zusammenhänmgender Speicher zur Verfügung steht. Ausserdem ist es sauberer Stil, seinen Speicher wieder selbst frei zu geben. Will man sich darum nicht kümmern müssen, dann muss man eine Sprache benutzen, die eine Garbagecollection besitzt und sich selber um das Freigeben kümmert.
Aber um auf die Ausgangsfrage zurückzukommen eine Gegenfrage: "Wie wichtig ist es den Müllereimer zu leeren?"