User since
2012-11-08
73
Artikel
BenutzerIn
Hi.
Gestern habe ich ein Programm benutzt, welches durch ein 5GB-file loopt und Zeilen, welche /XT:A:R/ matchen, in ein Output-file schreibt.
Dabei habe ich die Belegung des Arbeitsspeichers als Kuchendiagramm im "Activity Monitor" des Macs verfolgt. Der Arbeitsspeicher ist 4GB gross, davon waren ca 2GB "free" (Im Kuchendiagramm grün) vor Start des Programms. Bei Start des Programms wird der grüne Teil immer kleiner, es werden immer mehr Zeilen in den Speicher eingelesen.
Irgendwann war der Punkt erreicht, wo nur noch 10mb Arbeitsspeicher frei ist und diese Marke wurde nicht unterschritten.
Was passiert an diesem Punkt?
Das Programm will neue Zeilen einlesen, hat aber keinen Platz mehr im Arbeitsspeicher. Angenommen, dieser Punkt des vollen Arbeitsspeichers wird in meinem while (<file>) loop bei Zeile 10 Millionen des files erreicht: Werden dann nach und nach die Zeilen aus dem Arbeitsspeicher gelöscht, beginnend bei der ersten Zeile, die reingeladen wurde (Die erste Zeile war Zeile 1 meines files) ?
Frage2: Kann man den Arbeitsspeicher im while-loop irgendwie steuern? Weil wenn ich lediglich in jeder Zeile nach einem match suchen will, ist es doch überflüssig, dass bereits abgearbeitete Zeilen im Arbeitsspeicher verweilen -> Die nehmen mir ja Speicher weg für andere Dinge, die ich geichzeitig machen möchte ...