Mam 16 GB pamięci RAM systemu. Podczas uruchamiania bez otwartych aplikacji oprócz menedżera zadań system Windows zużywa około 3 GB pamięci RAM. Zajrzałem do zakładki procesów, ale wydaje się, że nic nie jest niezwykłe. Jak mogę dowiedzieć się, dlaczego mój system Windows wykorzystuje tak dużo pamięci RAM.
wszystkie procesy od wszystkich użytkowników
Czytając z puli, wydaje się, że mój bezprzewodowy sterownik Broadcom zużywa około 0,4 GB pamięci RAM. Nawet gdybym go usunął, nadal używałby 2,6 GB przy uruchamianiu, co wciąż jest zbyt duże.
Po ponownej instalacji sterownika bezprzewodowego związanego z wyciekiem pamięci. Mam nowy zrzut ekranu i chciałbym potwierdzić, że rzeczywiście był to wyciek pamięci.
Odpowiedzi:
Masz wyciek pamięci spowodowany przez sterownik. Spójrz na wysoką wartość niestronicowanej pamięci jądra. W twoim przypadku jest to ponad 3,7 GB. Możesz użyć poolmon, aby zobaczyć, który sterownik powoduje duże użycie.
Zainstaluj Windows WDK , uruchom poolmon, posortuj go Pwedług typu puli po, tak aby nie stronicowany był na wierzchu i Bbajtów po, aby zobaczyć znacznik, który zużywa najwięcej pamięci. Uruchom poolmon, przechodząc do folderu, w którym zainstalowano WDK, przejdź do Narzędzia (lub C: \ Program Files (x86) \ Windows Kits \ 10 \ Tools \ x64) i kliknij poolmon.exe.
Teraz spójrz, który znacznik zużywa najwięcej pamięci, jak pokazano tutaj:
Teraz otwórz wiersz polecenia i uruchom polecenie findstr. Aby to zrobić, otwórz wiersz polecenia cmd i wpisz „cd C: \ Windows \ System32 \ drivers”, bez cudzysłowów. Następnie wpisz „findstr / s __ . ”, Gdzie __ jest znacznikiem (nazwa najbardziej lewa w poolmon). Zrób to, aby zobaczyć, który sterownik używa tego znacznika:
Teraz przejdź do folderu sterowników (C: \ Windows \ System32 \ drivers) i kliknij prawym przyciskiem myszy dany sterownik (intmsd.sys w powyższym przykładzie obrazu). Kliknij Właściwości, przejdź do zakładki szczegółów, aby znaleźć nazwę produktu. Poszukaj aktualizacji dla tego produktu.
Jeśli tag pooltag pokazuje tylko sterowniki Windows lub jest wymieniony w pooltag.txt (
"C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\triage\pooltag.txt"
)używasz xperf do śledzenia, co powoduje użycie . Zainstaluj WPT z zestawu Windows SDK , otwórz cmd.exe jako administrator i uruchom to:
uchwycić 30 -60 wzrostu. Otwórz ETL za pomocą WPA.exe, dodaj wykresy puli do okienka analizy.
Umieść kolumnę pooltag na pierwszym miejscu i dodaj kolumnę stosu. Teraz załaduj symbole do WPA.exe i rozwiń stos znacznika, który widziałeś w poolmon.
Teraz znajdź inne sterowniki innych firm, które możesz zobaczyć na stosie. Tutaj
Thre
znacznik (Wątek) jest używany przez AVKCl.exe z G-Data. Poszukaj aktualizacji sterownika / programu, aby to naprawić.źródło
Po pierwsze, zanim przejdę do bardziej szczegółowej odpowiedzi. W pierwszym zrzucie ekranu pula niestronicowana (rodzaj użycia pamięci jądra) ma pojemność 1,3 GB. Wydaje mi się to niezwykle wysokie, szczególnie przez 30 minut po uruchomieniu. Wydaje mi się, że widziałem, jak NP Pool osiąga tak wysoki poziom po długim okresie użytkowania lub z programem, który przeciekał jak sito. Dla kontrastu, moja pula NP ma zwykle od 100 do 200 megabajtów, a pula stronicowana może mieć nawet 400 lub 500 (i to po tym, jak mój system działał bez ponownego uruchamiania przez tygodnie).
Możesz włączyć kilka dodatkowych kolumn w Menedżerze zadań, klikając prawym przyciskiem myszy nagłówki kolumn i wybierając wybierz kolumny. Należy dodać
Working Set (private)
,Working Set (shared)
,Commit
, iNP Pool
. Przeanalizuję wszystkie twoje procesy od wszystkich użytkowników i sprawdzę, czy któryś z nich ma pulę NP większą niż około 256 KB. Jeśli zauważysz jakieś, szczególnie te, które są znacznie wyższe, może to być przyczyna problemu lub przynajmniej jego część.Całkowity zestaw roboczy, ilość pamięci fizycznej wykorzystywanej przez proces, jest kombinacją prywatnych i współużytkowanych zestawów roboczych (WS). Prywatne jest zwykle większe dla większości procesów, jednak niektóre mogą korzystać z większej ilości współdzielonych WS. Te dwa powinny zwykle sumować się do całkowitej WS. Zatwierdzenie to ilość zestawu roboczego, która została przypisana do magazynu kopii zapasowych (w większości przypadków plik stronicowania systemu Windows). Aplikacje w tle często mają większy Commit niż WS, co wskazuje, że znaczna część ich puli stronicowanej została zamieniona z pamięci i do pliku stronicowania (co jest dość normalne w przypadku aplikacji komputerowych, które zostały zminimalizowane i nie były używane przez jakiś czas).
Pula niestronicowana jest pamięcią, której nie można i nigdy nie można zastąpić pamięcią fizyczną ... co jest efektywnym trwałym minimalnym zużyciem pamięci fizycznej. Pamięć puli NP często zawiera kod programu i krytyczne sekcje, które muszą znajdować się w pamięci fizycznej, aby zachowywać się poprawnie lub bezpiecznie, specjalne stosy itp. Z 60 procesów, jeśli wszystkie mają 256 KB pamięci puli NP, wówczas absolutne minimalne użycie pamięci fizycznej wyniesie około 15.360 KB. W większości przypadków jedna lub dwie aplikacje mogą mieć pulę NP 256 KB, podczas gdy większość ma mniej, często znacznie mniej (lub nie ma ich wcale). Jest bardzo mało prawdopodobne, że system przerzuci cały zestaw wszystkich działających procesów, więc nigdy nie oczekuj, że użycie pamięci będzie tak niskie.
Wreszcie, celem większej ilości pamięci jest uniknięcie konieczności stronicowania danych do iz rozszerzonej pamięci (wymiany, pliku strony) na dysku fizycznym. Stronicowanie to proces polegający na przenoszeniu bloków przydzielonej pamięci fizycznej, wypychaniu niektórych na dysk i przenoszeniu innych do pamięci fizycznej z dysku. Przywoływanie jest, mówiąc najprościej, wysoce niepożądane. Nie jest to samo w sobie „złe”, ale może występować utrudnienie w wydajności, gdy występuje zbyt często. Ostatecznym punktem zwiększenia całkowitej fizycznej pamięci RAM w systemie jest umożliwienie większej liczbie procesów zachowania większej liczby zmian w pamięci fizycznej (większy zestaw roboczy). Zużycie pamięci nie stanowi problemu, a gdy więcej wykonujących procesów zużywa więcej pamięci, całkowita wydajność systemu i wydajność aktywnego procesu będą zwykle wyższe,
System Windows zarządza pamięcią i automatycznie zapisuje dane z pamięci do i z pliku strony (wymiany). Jeśli uruchomisz proces, który wymaga 9 GB pamięci, a Twój system zużywa już 4 GB (z 12 GB), system automatycznie zorientuje się, które procesy nie potrzebują natychmiastowego dostępu do całego zestawu roboczego, i wyświetli niektóre lub wszystkie strony puli stronicowanej do wymiany, aby zwolnić ten dodatkowy 1 GB. Jeśli twój duży proces w końcu potrzebuje więcej pamięci, system Windows jeszcze bardziej zmniejszy zestaw roboczy innych procesów, dopóki nie będzie miał wystarczającej ilości wolnego miejsca do przydzielenia nowo żądanego bloku. Twój duży proces może ostatecznie zużyć całą dostępną pamięć oprócz NP Pool i być może trochę dodatkowego narzutu w celu okresowego wykonywania procesów, które nie pozwalają Windowsowi zwolnić więcej zestawu roboczego (i. mi. mają oczekujące błędy strony, które w przeciwnym razie Windows wymieniłby się z pamięci fizycznej, ale ponieważ są proszone, nie można ich przenieść).
Jeśli proces potrzebuje więcej pamięci, niż jest to dozwolone (procesy 32-bitowe zwykle mają dostęp do 2 Gb, a niektóre nieco mniej niż 4 Gb za pomocą ulepszonych technik, podczas gdy procesy 64-bitowe zwykle mają dostęp do około 48 Gb pamięci, każdy), wtedy system Windows czasami spróbuje do wirtualizacji pamięci za pomocą przestrzeni wymiany. Jeśli 32-bitowa aplikacja chce wykorzystać maksymalne dozwolone 2 GB miejsca, ale dostępne jest tylko 1,2 GB, system Windows zarezerwuje pełne 2 GB w pliku strony i przenosi własne dane do i z pliku strony w razie potrzeby w celu obsługuje wykorzystanie pamięci aplikacji. Całkowite użycie „pamięci” w tym przypadku może wydawać się większe niż dostępna pamięć fizyczna, gdy przechodzisz przez Total Commit. Total Commit zwykle osiąga maksymalny rozmiar przy wielkim całkowitym rozmiarze pliku strony, który zarządzany przez system zwykle wynosi 2-3 razy więcej pamięci fizycznej. W Twoim przypadku,
Ostatni punkt. W odpowiedzi powiedziałeś, że masz 16 GB pamięci RAM, a jako Menedżer zadań widzi tylko 12 GB pamięci RAM. Jedna z dwóch rzeczy tutaj. Albo twój system naprawdę ma tylko 12 GB pamięci RAM, albo jeden z twoich drążków nie rejestruje się poprawnie. Jeśli pamięć RAM (zakładam 4 x 4 Gb), może być źle, może nie być prawidłowo osadzona na płycie głównej lub na płycie głównej może wystąpić problem z wykrywaniem pamięci.
Aby sprawdzić, czy to ten ostatni, należy najpierw zaktualizować system BIOS płyty głównej do najnowszej wersji. Miałem podobny problem ... moje sześć trzyczęściowych pamięci RAM DDR3 (6x 2 Gb) wszystkie były dobre w oparciu o indywidualne testowanie każdego z nich ... ale moja płyta losowa postanowiła nie liczyć jednego lub dwóch z nich tak często, często pozostawiając mi tylko 8 GB pamięci RAM. Aktualizacja systemu BIOS rozwiązała problem i mam teraz niezawodny dostęp do wszystkich 12 GB pamięci.
źródło
Zużywa tak dużo pamięci RAM, ponieważ jest do tego przeznaczony . Korzystanie z pamięci RAM nie wiąże się z żadnymi kosztami. W rzeczywistości używana pamięć RAM jest lepsza niż wolna pamięć RAM, ponieważ system operacyjny nie musi nic robić, aby z niej korzystać. Korzystanie z wolnej pamięci RAM wymaga jej użycia, co wymaga wysiłku.
Jeśli myślisz „Chcę teraz mieć wolną pamięć RAM, abym mógł z niej później korzystać”, zapomnij. Pamięć RAM nie musi być teraz wolna, aby użyć jej później. Możesz go użyć teraz, a później. Nie ma tutaj kompromisu - absolutnie nie ma negatywnego wpływu na użycie pamięci RAM.
Pamięć RAM jest używana i bezpośrednio przełączana z jednego użycia na drugi bez konieczności podejmowania wysiłku, aby ją uwolnić, tylko po to, aby ponownie ją użyć. Nowoczesne systemy operacyjne pozostawiają wolną pamięć RAM tylko wtedy, gdy nie mają innego wyboru.
źródło
“Why is Windows using RAM?”
, pytanie brzmi:“Why do the RAM usage numbers not add up; why is one part reporting a higher usage than another part?”
ten post powinien być co najwyżej komentarzem, ponieważ nie odnosi się do rzeczywistego pytania ani nawet nie próbuje na nie odpowiedzieć; pojawia się tylko z niewielką radą i złą radą, ponieważ jeśli OP zignoruje to jak sugerowano, wyciek pamięci nie zostanie wykryty.Przyczyną niewymienioną powyżej jest Hyper-V.
Udało mi się to zidentyfikować za pomocą doskonałego narzędzia RamMap :
Zrzut ekranu pochodzi z później. Zanim pamięć „Driver Locked” przekroczyła 6 GB, ponad 80% pamięci RAM w tym konkretnym komputerze. Musiałem przejść do Menedżera funkcji Hyper-V i wyłączyć „Pamięć dynamiczną”. Co ciekawe, nawet po ponownym włączeniu pamięć „Driver Locked” pozostała niska - mogę jedynie założyć, że wcześniejsze instancje ją zwiększyły i że Hyper-V nie zmniejsza automatycznie przydzielonej pamięci:
źródło