Jak sprawić, by system Windows 7 był mniej agresywny w buforowaniu pamięci?


16

Zauważyłem niedawno, że Windows 7 na moim komputerze narzeka na brak pamięci i że powinienem zamknąć niektóre programy. Zazwyczaj wskazywałoby to na uruchamiany przeze mnie program, który ma przeciek pamięci i urósł dość mocno. Zazwyczaj jednak programy te zaczynają się od 20 MB pamięci RAM i dopiero po uruchomieniu programu między 12 a 24 godzinami zwiększają się maksymalnie do 200 MB pamięci RAM. Nigdy nie mam więcej niż trzech z tych programów działających jednocześnie, więc 600 MB pamięci RAM maks. Nigdy nie widziałem z moich uruchomionych programów.

Korzystam z systemu Windows 7 x64 na komputerze z 4 GB pamięci RAM. Na początku faktycznie zapomniałem o tym i po prostu ponownie uruchomiłem programy, gdy Windows narzekał, ale teraz, gdy sobie przypomniałem, fakt, że Windows narzeka na mnie za pomocą 600 MB pamięci RAM (poniżej 2 GB, nawet jeśli zawierasz pamięć używaną przez sam system operacyjny), wydawał się dziwny . Więc otworzyłem okno procesu systemowego, aby sprawdzić całkowite wykorzystanie pamięci przez moje procesy i procesy systemowe, które zostały wymienione. Dało to nieco ponad 700 MB, więc nadal byłem zdezorientowany. Następnie poszedłem do Monitora zasobów i otworzyłem kartę Pamięć. Tam chyba znalazłem odpowiedź. Zauważyłem, że faktycznie używałem tylko 33% mojej pamięci RAM. Jednak na pasku alokacji zasobów pamięci fizycznej sekcja Zmodyfikowana miała do 2,3 GB, sekcja Tryb gotowości do 540 MB, sekcja Wolna była mniejsza niż 20 MB, pamięć podręczna została wymieniona na 2. 8 GB i dostępna pamięć została wymieniona na 550 MB. (Wartości te są oczywiście lekko zaokrąglone, ponieważ twoje ciągle się zmieniają, kiedy to piszę.)

Najwyraźniej Windows 7 zużywa więcej pamięci niż ja. W pewnym momencie w przeszłości dokonałem pewnych modyfikacji w menu zainstalowanych usług Windows, ale było to tylko wyłączenie niektórych usług hostingowych, ponieważ nie chciałem udostępniać multimediów, włączyć klienta Telnet i usunąć Internet Odkrywco, ale to może być moja wina. Czy jest jakiś sposób, aby Windows tego nie robił lub przynajmniej buforował o wiele mniej agresywnie, więc przestaję otrzymywać powiadomienia o niskim poziomie pamięci?


2
PO źle zrozumiał problem. Brakuje mu kopii zapasowej pamięci wirtualnej. Cała jego analiza dotycząca pamięci fizycznej jest nieistotna. Możesz mieć dużo wolnej pamięci fizycznej, ale niewystarczającą ilość wolnej pamięci wirtualnej, a wyskakujące ostrzeżenie pamięci jest ostrzeżeniem o braku zapasowej pamięci wirtualnej, a nie pamięci fizycznej. (Chociaż wyciek pamięci fizycznej ze sterownika może powodować problem pośrednio.)
David Schwartz,

„PO źle zrozumiał problem”. Podobnie jak kilku osób odpowiadających. :(
Jamie Hanrahan,

Odpowiedzi:


10

Pamięć rezerwowa nie stanowi problemu, jest uważana za „wolną” i na żądanie zostanie ponownie przydzielona - zawiera tylko pamięć ostatnio używaną przez programy, ale została zwolniona. Jeśli inny program zażąda więcej pamięci niż „Wolna”, system powinien bezproblemowo przydzielić pamięć z trybu gotowości (ponieważ pamięć „gotowości” nie jest w tej chwili używana).

Problemem jest nadmierna pamięć zmodyfikowana, ponieważ nie można jej łatwo przydzielić ponownie. Zobacz tutaj . Przyczyną może być przeciek pamięci (który wydaje się odpowiadać pierwszemu akapitowi - jakie programy przeciekają?) Lub zbyt mały plik strony (czy plik strony ma ustalony rozmiar lub jest wyłączony?).


3
Jak zauważyłem w komentarzu do odpowiedzi CJM, zamknąłem wszystkie moje aplikacje, które były wątpliwe (niektóre niezależne gry komputerowe) i mam teraz tylko Menedżera zadań, Monitor zasobów, AVG i Chrome, ale nadal mam 1,6 GB zmodyfikowanej pamięci. Pozostawiam komputer włączony na kilka dni, co odpowiada profilowi ​​w łączonym artykule. Jednak uwaga na tej stronie internetowej polegała na szukaniu procesu o dużym rozmiarze zatwierdzenia. Obecnie jest to proces z nSvcAppFlt.exe. Ma tylko działający rozmiar zestawu 30 MB, ale rozmiar zatwierdzenia 13,5 GB. Co daje?
grg-n-sox,

2
To program, który przecieka twoją pamięć. Zobacz także social.answers.microsoft.com/Forums/en-US/w7performance/thread/… . Usuń to i wszystko powinno być dobrze.
akid

Dziękuję Ci bardzo. Właściwie to trochę fajne. Więc w zasadzie, jeśli zauważam, że pamięć RAM jest zjedzona, mogę po prostu przejść do mojego monitora zasobów, sprawdzić, czy sekcja Zmodyfikowana pamięć jest ogromna, i zobaczyć, jaki proces ma duży rozmiar zatwierdzeń, i znajduję mój program wyciekający z pamięci? Zdecydowanie miłe narzędzie diagnostyczne dla systemu Windows.
grg-n-sox

Wyłącz lub zaktualizuj oprogramowanie zapory Nvidia.
David Schwartz

Masz trzy „ty”, które powinny być „twoje” w ostatnim akapicie. (nie mogę zaproponować edycji, zbyt drobna).
Shadow The Burning Wizard

4

Buforowanie z wyprzedzeniem SuperFetch nie jest twoim problemem. Windows 7 zużyje tyle wolnej pamięci, ile może, aby wyprzedzająco buforować to, co według ciebie będzie potrzebne w przyszłości. Jeśli wszystko pójdzie dobrze, zaoszczędzi ci trochę czasu, a twoje aplikacje będą wyglądać szybciej i szybciej.

Jeśli zgadnie, a potrzebujesz innych danych, Superfetch zwolni część posiadanej pamięci, aby umożliwić Ci załadowanie danych, których naprawdę potrzebujesz. Zobacz: http://arstechnica.com/microsoft/news/2010/02/behind-the-windows-7-memory-usage-scaremongering.ars

Jeśli masz problemy z „małą ilością pamięci”, nie będzie to spowodowane SuperFetch - ponieważ zużyje tyle pamięci, ile jest konieczne, jeśli wymagają tego aplikacje. Dostępna pamięć (550 MB) jest używana przez superszybkie pobieranie, więc najwyraźniej nie zabrakło jej jeszcze. Nawet jeśli zużyjesz całą pamięć RAM, twoja maszyna wróci do pamięci wirtualnej, chociaż będziesz tego chciał uniknąć z powodu spadku wydajności ...

Sugeruje to, że problemy z niską pamięcią wynikają z innych problemów - być może jedna z nieszczelnych aplikacji zużywa (a nie rezygnuje) inne rodzaje zasobów ...

Tak czy inaczej, bardziej prawdopodobne jest znalezienie rozwiązania przez zajęcie się błędnymi aplikacjami, niż przez zabawę z SuperFetch ...


Rozumiem, że sekcja pamięci w trybie gotowości jest częścią pamięci podręcznej, ale poważnie muszę wątpić, że problemem są moje programy. Właśnie je wszystkie zamknąłem, więc wszystko, co mam uruchomione, to AVG, Menedżer zadań, Monitor zasobów i jedno okno Chrome z 4 zakładkami. Mam tylko 1042 MB w użyciu z 1417 MB dostępnej pamięci, ale wciąż mam tę ogromną część Zmodyfikowanej pamięci, która zajmuje 1633 MB, którą Menedżer zadań liczy jako pamięć używaną i daje mi powiadomienia o niskim poziomie pamięci. Czy istnieje sposób na zmniejszenie ilości zmodyfikowanej pamięci lub wyłączenie powiadomienia o niskim poziomie pamięci?
grg-n-sox,

0

Ponieważ nie uważasz, że problem jest spowodowany przez program z wyciekiem pamięci, alternatywą byłoby zwiększenie rozmiaru pliku strony.

Chociaż plik stronicowania nie jest twoją główną pamięcią, pozwoli systemowi operacyjnemu zamienić więcej danych na dysk twardy i, miejmy nadzieję, zatrzyma komunikat „brak pamięci”. Jedyną inną opcją byłoby usunięcie programu związanego z procesem, który ma duży wydruk o powierzchni 13 GB, chociaż nie mam pojęcia, jaki program musiałby stronicować tyle pamięci, chyba że była to gra komputerowa lub oprogramowanie do renderowania 3D.


0

Z mojego doświadczenia, pełzanie w trybie gotowości jest prawdziwym problemem. Na przykład, jeśli uruchomię Snagit w trybie z przesuwanymi oknami dla długiego artykułu, będą fragmenty tego artykułu, które nie zostały przechwycone, gdy działam tylko w trybie gotowości. W każdym razie okazuje się, że mój komputer działa wolno w trybie gotowości.

Aby rozwiązać problem, używam optymalizatora pamięci z bezpłatnych narzędzi Glary. Mój komputer ma 6 GIG pamięci. Po pierwszym uruchomieniu mam około 2 GIG pamięci w użyciu, 2 GIG gotowości i 2 GIG, co nazywam wolną wolną pamięcią, zgodnie z Windows Resource Monitor. W ciągu około pół dnia cała moja pamięć Free-Free zmieni się w pamięć Standby, niezależnie od tego, czy korzystam z komputera, czy nie. Teraz mam Glary Utilities optymalizator pamięci uruchamiający się z systemem Windows i mogę utrzymywać mój komputer w nieskończoność, mając do dyspozycji pełne 2 GIG darmowej pamięci.

Za każdym razem, gdy siadam do następnej sesji, najpierw dwukrotnie klikam ikonę zasobnika optymalizatora pamięci i przeprowadzam optymalizację; z prośbą o uwolnienie mojej oryginalnej 2 GIG wolnej pamięci. Mogę prosić o więcej, ale to maksimum, które uwolni niezależnie. Wykonanie optymalizatora zajmuje około 30 sekund, co jest znacznie mniej niż wymagane do ponownego uruchomienia. Ma tryb automatycznej optymalizacji, ale nie byłem w stanie dowiedzieć się, jak to zrobić.


Pamięć rezerwowa nie stanowi problemu.
Jamie Hanrahan,

„Optymalizator pamięci” powinien zostać złomowany. Czołowa pamięć RAM to pamięć RAM, która była ostatnio „używana” w procesach. Został wypchnięty z tych procesów z powodu zastąpienia zestawu roboczego, ale nadal zawiera to, co zrobił, gdy był „w użyciu”. Jeśli proces potrzebuje czegoś, co znajduje się na jednej z tych stron, stronę można szybko przywrócić do procesu. Właśnie dlatego tryb gotowości jest uważany za część „pamięci podręcznej”. Ale tryb gotowości jest tak samo „dostępny” do innych zastosowań, jak wolna pamięć RAM. Twój „optymalizator pamięci” właśnie przeniósł kilka stron z trybu gotowości do trybu wolnego, tzn. Zestrzeliłeś pamięć podręczną trybu gotowości [...]
Jamie Hanrahan,

[...] bez udostępniania więcej pamięci RAM. Ponieważ „Standby” był zawsze „dostępny”! W systemie Vista i nowszych funkcja Superfetch może teraz używać części trybu gotowości do aktywnego buforowania plików, ale strony są nadal przeznaczone do wykorzystania przez inne procesy w razie potrzeby. Tak więc SuperFetch nie usuwa też żadnych stron z „Dostępne”. Pozbądź się „menadżera pamięci”, ponieważ obniża on wydajność systemu, powodując niepotrzebne operacje We / Wy dysku.
Jamie Hanrahan,

-1

By rozwiązać ten problem

Idź do start-run-msconfig, następnie usług i usuń zaznaczenie z „Podstawa sterownika Windows”. kliknij ok i uruchom ponownie komputer.

Pamiętaj - tylko wyżej wymienione kroki rozwiążą ten problem. Jeśli wyłączyłeś usługę services.msc, jest ona nadal aktywna w momencie uruchamiania systemu operacyjnego i zablokuje twoją pamięć.

Aby to sprawdzić, użyj narzędzia


Wyłączenie usługi WDF spowoduje wyłączenie wszystkich urządzeń zależnych od tego modelu sterownika. To zły pomysł.
Jamie Hanrahan,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.