Vor kurzem habe ich aus Neugier ein Java-Programm geschrieben, das sehr schnell viel Speicherplatz beansprucht. (Es fügt BufferedImages zu einer Arrayliste in einer Schleife hinzu.)
Ich habe den Windows-Systemmonitor geöffnet, um die RAM-Auslastung während der Ausführung zu beobachten.
Als ich das Programm startete, stieg die RAM-Auslastung sehr schnell an und als sie ungefähr 100% meiner 6 GB RAM erreichte, wurde mein Computer extrem langsam. Nach ungefähr einer Minute konnte ich das Programm beenden und mein Computer stellte langsam die Geschwindigkeit wieder her. Was meine Aufmerksamkeit auf sich zog, war, dass die Speichernutzung zuerst langsam abnahm, dann plötzlich auf fast 0 MB abfiel, bevor sie wieder auf Leerlauf bei etwa 2 bis 2,5 GB anstieg.
Ich habe einen Screenshot der RAM-Nutzung im Systemmonitor gemacht:
Ich habe mich gefragt, ob jemand erklären kann, was passiert, wenn der Computer keinen Speicher mehr hat und warum er nicht gleich nach Programmende in den Leerlauf zurückkehrt, sondern etwa 60 Sekunden später. Warum geht die Nutzung bis auf nichts zurück, anstatt nur im Leerlauf?
quelle
Antworten:
Wenn Sie die Grenze des Hauptspeichers erreichen, beginnt Ihr Betriebssystem, Speicher auf die Festplatte auszutauschen, um Platz für mehr Material zu schaffen (dies wird als Paging bezeichnet ). Aus diesem Grund wird Ihr Computer sehr langsam, da das Laufwerk möglicherweise langsamer als der Arbeitsspeicher ist, selbst wenn Sie sich auf einer SSD befinden. Dies ist auch der Grund, warum Ihr Programm ohne Hauptspeicher fortgesetzt werden kann.
Der Leerlaufspeicher wird häufig zuerst ausgetauscht, damit aktive Programme so viel wie möglich im RAM haben können. Dies ist der Grund, warum die Speichernutzung unter den üblichen Leerlaufzustand fällt. Das System beginnt erneut, Speicherseiten auszutauschen, und der Leerlaufspeicher füllt sich schließlich im RAM.
quelle