Werden Prozesse in Windows 7 zwischengespeichert?

474
Kao

Ich verwende meine Java-Anwendung mit Windows Performance Analyzer . Meine App ist ein einfacher Parser, der zum Analysieren von Dateien ein externes Befehlszeilenprogramm verwendet. Dieses externe Programm wird für jede Datei aufgerufen. So sieht es aus, wenn es in Windows 7 ausgeführt wird:

Ergebnisse der Profilerstellung

Wie Sie sehen, gibt es zwei kurzlebige Prozesse, die gleichzeitig erstellt werden: conhost.exeund src2srcml.exe. Seltsam ist, dass diese Prozesse zum ersten Mal viel länger als später am Leben sind. Was kann die Ursache sein?

Ist es möglich, dass Windows diese Prozesse auf irgendeine Weise zwischenspeichert?

4

2 Antworten auf die Frage

4

Windows 7 speichert tatsächlich alle Arten von Dateien, einschließlich Anwendungen, im Arbeitsspeicher. Ihre Vermutung ist wahrscheinlich richtig, die Tatsache, dass sich die Prozesse im Speicher befinden, lässt sie viel schneller beginnen. Die ausführbaren Dateien werden nicht nur selbst zwischengespeichert, sondern auch die benötigten DLLs werden geladen und sind bereit.

1
harrymc

conhost.exeist der Konsolen-Hosting-Prozess, der von der Eingabeaufforderung (cmd) gestartet wird. Es ist vorhanden, weil Sie ein Befehlszeilenprogramm verwenden.

src2srcml.exeist Teil des srcML-Toolkits und wahrscheinlich vorhanden, weil Sie Quellmarkup- oder XML-Dateien bearbeiten .

Warum es beim ersten Aufruf langsamer ist, wie bereits von MoJo festgestellt wurde, liegt daran, dass beim ersten Aufruf nicht benötigte Objekte in den Speicher geladen werden. Solange Windows keinen Arbeitsspeicher benötigt, werden alle gelesenen oder geschriebenen Dateiblöcke darin belassen.

Dazu gehören ausführbare Dateien, DLL-Dateien, Plattentabellen, Verzeichnisstruktur, Benutzerdatendateien, die Registrierung, benötigte Kernelmodule. Alles, was sich auf der Festplatte befindet, wird von Windows zwischengespeichert.

Die Größe des Caches ist vollständig dynamisch und kann sich auf mehr als die Hälfte des Arbeitsspeichers erstrecken. Da der Speicher von Programmen benötigt wird, gibt Windows Blöcke aus, die gelesen wurden. Es wird auch regelmäßig überprüft, ob modifizierte Blöcke herausgeschrieben werden müssen, damit sie sich als Kandidaten für die Befreiung (Lazy Writing) entscheiden können. Aus diesem Grund ist es nicht ratsam, den Netzstecker an einem Windows-Computer zu ziehen.

Aus diesem Grund sind neuere Aufrufe schneller, da Windows sich an Ihre Bedürfnisse angepasst hat, indem alle erforderlichen Objekte in den RAM geladen werden.

Weitere Informationen finden Sie in den Microsoft-Blogs zum Zwischenspeichern von Dateien oder E / A-Konzepten .

Was den ersten Teil angeht - das habe ich schon gewusst, weil ich dieses Java-Programm selbst geschrieben habe;) Kao vor 9 Jahren 0