Ich habe 16 GB System-RAM. Beim Start sind keine Anwendungen geöffnet, außer der Task-Manager, für den Windows etwa 3 GB RAM verwendet. Ich habe in der Registerkarte Prozesse nachgesehen, aber nichts scheint ungewöhnlich zu sein. Wie kann ich herausfinden, warum mein Windows so viel RAM verwendet?
alle Prozesse von allen Benutzern
Aus dem Poolmon geht hervor, dass mein Wireless Broadcom-Treiber etwa 0,4 GB RAM verbraucht. Selbst wenn ich es entferne, würde es beim Start immer noch 2,6 GB verwenden, was immer noch zu viel ist.
Nach der Neuinstallation des mit dem Speicherverlust verbundenen WLAN-Treibers. Ich habe einen neuen Screenshot und möchte bestätigen, dass es sich tatsächlich um einen Speicherverlust handelt.
Antworten:
Sie haben einen Speicherverlust, der von einem Treiber verursacht wird. Sehen Sie sich den hohen Wert des nicht ausgelagerten Kernelspeichers an. In Ihrem Fall sind das über 3,7 GB. Mit poolmon können Sie feststellen , welcher Treiber die hohe Auslastung verursacht.
Installieren Sie das Windows-WDK , führen Sie poolmon aus und sortieren Sie es Pnach dem Pooltyp, sodass nicht ausgelagerte Daten oben und Bnach den Bytes angezeigt werden, um das Tag zu ermitteln, das den meisten Speicher belegt. Führen Sie poolmon aus, indem Sie in den Ordner wechseln, in dem WDK installiert ist, auf Tools (oder C: \ Programme (x86) \ Windows Kits \ 10 \ Tools \ x64) gehen und auf poolmon.exe klicken.
Schauen Sie sich nun an, welcher Pooltag den meisten Speicherplatz belegt:
Öffnen Sie nun eine cmd-Eingabeaufforderung und führen Sie den Befehl findstr aus. Öffnen Sie dazu die Eingabeaufforderung cmd und geben Sie "cd C: \ Windows \ System32 \ drivers" ohne Anführungszeichen ein. Geben Sie dann "findstr / s __ . " Ein, wobei __ das Tag ist (Name ganz links in Poolmon). Gehen Sie folgendermaßen vor, um festzustellen, welcher Treiber dieses Tag verwendet:
Wechseln Sie nun zum Treiberordner (C: \ Windows \ System32 \ drivers) und klicken Sie mit der rechten Maustaste auf den betreffenden Treiber (intmsd.sys im obigen Bildbeispiel). Klicken Sie auf Eigenschaften und gehen Sie zur Registerkarte Details, um den Produktnamen zu finden. Suchen Sie nach einem Update für dieses Produkt.
Wenn der Pooltag nur Windows-Treiber anzeigt oder in der pooltag.txt (
"C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\triage\pooltag.txt"
) aufgelistet istSie haben xperf verwendet, um zu verfolgen, was die Verwendung verursacht . Installieren Sie das WPT vom Windows SDK , öffnen Sie eine cmd.exe als admin und führen Sie dies aus:
30 -60s des Wachstums erfassen. Öffnen Sie die ETL mit WPA.exe, und fügen Sie die Pool-Diagramme zum Analysebereich hinzu.
Platzieren Sie die Pooltag-Spalte an erster Stelle und fügen Sie die Stapelspalte hinzu. Jetzt die Symbole laden innen WPA.exe und den Stapel des Tags erweitern , die Sie in Poolmon sehen.
Suchen Sie nun andere Treiber von Drittanbietern, die Sie im Stapel sehen können. Hier wird das
Thre
Tag (Thread) von AVKCl.exe von G-Data verwendet. Suchen Sie nach Treiber- / Programm-Updates, um das Problem zu beheben.quelle
Nun, als erstes, bevor ich auf eine detailliertere Antwort gehe. In Ihrem ersten Screenshot liegt Ihr nicht ausgelagerter Pool (eine Art von Kernel-Speicherbelegung) bei 1,3 GB. Das kommt mir ungewöhnlich hoch vor, vor allem 30 Minuten nach dem Booten. Ich schätze, ich konnte sehen, dass der NP-Pool nach längerem Gebrauch oder mit einem Programm, das wie ein Sieb leckte, so hoch wurde. Im Gegensatz dazu ist mein NP-Pool normalerweise zwischen 100 und 200 MB groß und mein ausgelagerter Pool kann bis zu 400 oder 500 MB groß sein (und das, nachdem mein System wochenlang ohne Neustart ausgeführt wurde).
Sie können einige zusätzliche Spalten im Task-Manager aktivieren, indem Sie mit der rechten Maustaste auf die Spaltenüberschriften klicken und Spalten auswählen. Sie sollten hinzufügen
Working Set (private)
,Working Set (shared)
,Commit
, undNP Pool
. Ich überprüfe alle Prozesse aller Benutzer und überprüfe, ob einer von ihnen einen NP-Pool von mehr als etwa 256 KB hat. Wenn Sie irgendwelche sehen, insbesondere solche, die wesentlich höher sind, könnte dies die Ursache des Problems sein oder zumindest einen Teil davon.Ihr gesamter Arbeitssatz, die Menge an physischem Speicher, die von einem Prozess verwendet wird, ist die Kombination aus privatem und gemeinsamem Arbeitssatz (WS). Private ist normalerweise für die meisten Prozesse größer, es kann jedoch auch einige geben, die eine größere Menge gemeinsam genutzter WS verwenden. Die zwei sollten normalerweise zum gesamten WS summieren. Festschreiben ist der Betrag Ihres Arbeitssatzes, der für den Sicherungsspeicher festgeschrieben wurde (in den meisten Fällen die Windows-Auslagerungsdatei). Hintergrundanwendungen weisen häufig ein höheres Commit als WS auf, was darauf hinweist, dass ein Großteil ihres ausgelagerten Pools aus dem Arbeitsspeicher in Ihre Auslagerungsdatei ausgelagert wurde (was für Desktopanwendungen, die minimiert und für eine Weile nicht verwendet wurden, ziemlich normal ist).
Der nicht ausgelagerte Pool ist ein Speicher, der nicht aus dem physischen Speicher ausgelagert werden kann und wird. Dies ist effektiv Ihre permanente minimale physische Speicherauslastung. Der NP-Pool-Speicher enthält häufig Programmcode und wichtige Abschnitte, die sich im physischen Speicher befinden müssen, um korrekt oder sicher zu funktionieren, spezielle Heaps usw. Bei mehr als 60 Prozessen mit 256 KB NP-Pool-Speicher ist der physische Arbeitsspeicher auf ein Minimum beschränkt wäre rund 15.360 KB. In den meisten Fällen verfügen eine oder zwei Apps über einen 256-KB-NP-Pool, während die meisten weniger, häufig erheblich weniger (oder gar keinen) haben. Es ist sehr unwahrscheinlich, dass das System jemals die Gesamtheit aller funktionierenden Prozesse auslagert. Erwarten Sie also nicht, dass die Speichernutzung jemals so niedrig wird.
Schließlich geht es darum, mehr Speicher zu haben, um zu vermeiden, dass Daten auf und von einem erweiterten Speicherplatz (Auslagerungsspeicher, Auslagerungsdatei) auf einer physischen Festplatte ausgegeben werden müssen. Paging ist ein Prozess, bei dem Blöcke des zugewiesenen physischen Speichers verschoben, einige auf die Festplatte verschoben und andere von der Festplatte in den physischen Speicher verschoben werden. Paging ist, um es einfach zu halten, höchst unerwünscht. Es ist per se nicht "schlecht", aber es kann eine echte Beeinträchtigung der Leistung sein, wenn es zu häufig auftritt. Der ultimative Punkt für die Erhöhung des gesamten physischen Arbeitsspeichers in einem System besteht darin, mehr Prozessen zu ermöglichen, einen größeren Teil ihres Commits im physischen Speicher zu behalten (größere Arbeitsmenge). Der Speicherverbrauch ist kein Problem, und wenn mehr ausführende Prozesse mehr Speicher belegen, sind in der Regel die Gesamtsystemleistung und die Leistung aktiver Prozesse höher.
Windows verwaltet den Arbeitsspeicher für Sie und paginiert automatisch Daten in und aus dem Arbeitsspeicher in die Auslagerungsdatei für Sie. Wenn Sie einen Prozess ausführen, der 9 GB Arbeitsspeicher benötigt und Ihr System bereits 4 GB (von 12 GB) verwendet, ermittelt das System automatisch, welche Prozesse keinen sofortigen Zugriff auf ihren gesamten Arbeitssatz benötigen, und es werden einige oder alle Seiten angezeigt von ihrem ausgelagerten Pool zu tauschen, um diese zusätzlichen 1GB freizugeben. Wenn Ihr großer Prozess irgendwann mehr Speicher benötigt, wird die Anzahl der anderen Prozesse durch Windows weiter reduziert, bis genügend freier Speicherplatz für die Zuweisung des neu angeforderten Blocks vorhanden ist. Ihr großer Prozess könnte schließlich den gesamten verfügbaren Speicher mit Ausnahme des NP-Pools und möglicherweise einen zusätzlichen minimalen Overhead für die regelmäßige Ausführung von Prozessen verbrauchen, bei denen Windows nicht mehr Arbeitsspeicher freigibt (i. e. Sie weisen ausstehende Seitenfehler auf, die Windows andernfalls aus dem physischen Speicher auslagern würde. Sie können jedoch nicht verschoben werden, da sie angefordert werden.)
Wenn ein Prozess mehr Speicher benötigt, als er zugreifen darf (32-Bit-Prozesse können in der Regel auf 2 GB zugreifen, und einige weniger als 4 GB mit erweiterten Techniken, während 64-Bit-Prozesse in der Regel auf jeweils etwa 48 GB Speicher zugreifen können), versuchen es Windows manchmal seinen Speicher mit Swap Space zu virtualisieren. Wenn eine 32-Bit-App ihren maximal zulässigen Speicherplatz von 2 GB verwenden möchte, jedoch nur 1,2 GB verfügbar sind, reserviert Windows die gesamten 2 GB in der Auslagerungsdatei und verschiebt die prozesseigenen Daten nach Bedarf in die Auslagerungsdatei und aus dieser heraus unterstütze die Speichernutzung der App. In diesem Fall scheint die Gesamtbelegung des "Speichers" größer zu sein als der verfügbare physische Speicher, wenn Total Commit verwendet wird. Total Commit wird normalerweise die maximale Größe der gesamten Auslagerungsdatei erreichen, die, wenn sie vom System verwaltet wird, normalerweise das 2-3-fache des physischen Arbeitsspeichers beträgt. In deinem Fall,
Ein letzter Punkt. Sie sagten in Ihrer Antwort, dass Sie 16 GB RAM hatten, während der Task-Manager nur 12 GB RAM sieht. Eins von zwei Dingen hier. Entweder hat Ihr System wirklich nur 12 GB RAM, oder einer Ihrer Sticks registriert sich nicht richtig. Wenn ein RAM-Stick (ich gehe davon aus, dass es sich um 4 x 4-GB-Sticks handelt) schlecht ist, möglicherweise nicht richtig in Ihrem Motherboard sitzt oder ein Problem mit der Speichererkennung auf Ihrem Motherboard vorliegt.
Um zu überprüfen, ob es das letztere ist, sollten Sie zuerst Ihr Motherboard-BIOS auf die neueste Version aktualisieren. Ich hatte ein ähnliches Problem ... meine sechs Tripple-Channel-DDR3-RAM-Sticks (6 x 2 GB) waren alle gut, da sie einzeln getestet wurden ... aber mein Motherboard entschied sich nach dem Zufallsprinzip, nicht ein oder zwei von ihnen zu zählen, Ich habe oft nur 8 GB RAM übrig. Ein BIOS-Update hat das Problem behoben, und ich habe jetzt zuverlässigen Zugriff auf alle 12 GB meines Speichers.
quelle
Es verbraucht so viel RAM, weil es dafür ausgelegt ist . Die Verwendung von RAM ist absolut kostenlos. In der Tat ist der verwendete Arbeitsspeicher besser als der freie Arbeitsspeicher, da das Betriebssystem nichts tun muss, um ihn zu verwenden. Die Verwendung von freiem RAM erfordert eine aufwändige Nutzung.
Wenn Sie denken "Ich möchte, dass mein RAM jetzt frei ist, damit ich es später verwenden kann", vergessen Sie es. RAM muss jetzt nicht frei sein, um später verwendet zu werden. Sie können es jetzt und später verwenden. Hier gibt es keinen Kompromiss - es gibt absolut keinen Nachteil bei der Verwendung von RAM.
RAM wird verwendet und direkt von einer Verwendung zu einer anderen gewechselt, ohne dass es erst wieder verwendet werden muss. Moderne Betriebssysteme lassen RAM nur dann frei, wenn sie keine andere Wahl haben.
quelle
“Why is Windows using RAM?”
, sondern lautet:“Why do the RAM usage numbers not add up; why is one part reporting a higher usage than another part?”
Dieser Beitrag sollte bestenfalls ein Kommentar sein, da er die eigentliche Frage nicht anspricht oder gar versucht , sie zu beantworten. es mischt sich nur mit ein bisschen Rat ein, und ein schlechter Rat, da, wenn das OP es wie vorgeschlagen ignoriert hätte, der Speicherverlust nicht entdeckt würde.Ein oben nicht genannter Grund ist Hyper-V.
Ich konnte es mit dem hervorragenden Dienstprogramm RamMap identifizieren :
Der Screenshot stammt von after. Bevor der "Driver Locked" -Speicher mehr als 6 GB betrug, waren mehr als 80% des Arbeitsspeichers auf diesem Computer vorhanden. Ich musste in Hyper-V Manager gehen und "Dynamic Memory" deaktivieren. Seltsamerweise blieb der "Driver Locked" -Speicher auch nach der erneuten Aktivierung niedrig - ich kann nur davon ausgehen, dass er durch frühere Instanzen erhöht wurde und dass Hyper-V den zugewiesenen Speicher nicht automatisch reduziert:
quelle