Mój problem wydaje się prosty. Mój komputer zużywa więcej pamięci fizycznej niż jest to uwzględnione w sumie moich programów.
! (Z systemem Windows 8.1, najnowsze łaty)
Używam 7,5 GB. Całkowite wykorzystanie wynosi 12 GB. Delta ma 4,5 GB. Uważam to za bardzo wysokie.
Większość postów, które znalazłem na tej stronie, dotyczy wycieków pamięci sterowników wpływających na „pulę stronicowaną” i „pulę niestronicowaną”, co powoduje duże wykorzystanie. Jednak moja strona + pula niestronicowana ma około 650 MB, co, jak rozumiem, nie jest znacznie powyżej „normalnego” i nie powinna powodować tej delty 4,5 GB. Aby dalej to zbadać, nawet pobiegłem poolmon.exe
i nie znalazłem takich nieszczelnych sterowników, kiedy sortowałem według użycia.
Więc moje pytanie brzmi: co daje? Gdzie pamiętasz?
Aktualizacja:
Miły użytkownik skierował mnie do programu rammap, który podaje bardziej szczegółowe opisy alokacji pamięci. Po uruchomieniu odkryłem, że 2 GB pamięci w sekcji „w użyciu” zostało przydzielone na „Pliki zmapowane”, które, jak sądzę, są buforowane na dysku. Po przejściu do zakładki „fizyczne strony” i sortowaniu według wspomnianych plików, dowiedziałem się, że wiele aktywnych mapowanych plików to pliki używane przez aplikację torrentową obsługującą duże pliki danych. Zakończenie aplikacji uwolniło 1,2 GB pamięci podręcznej dysku do trybu gotowości, dając w ten sposób zrzut ekranu, który możesz zobaczyć poniżej.
„Delta” spadła do 3,2 GB, co zbliża się do tego, co uważam za normalne, ale wciąż jest na wysokim poziomie, chociaż jeśli odejmiesz pozostałą część „pliku mapowanego” 800 MB, otrzymasz 2.4 GB, co można po prostu wyjaśnić niepoprawną liczbą podaną w polu Użytkownicy w menedżerze zadań.
Mając te informacje, teraz nie jestem tego taki pewien. Czy to tylko ja nie rozumiem rachunkowości pamięci? Czy sekcja „udostępniana” w tabeli jest faktycznie używana przez programy użytkownika i po prostu nie jest uwzględniona w przestrzeni użytkownika w menedżerze zadań? Jeśli tak, to problem byłby mieszanką tego, że nie wiedząc, że buforowanie dysku może liczyć w pamięci „W użyciu” / „Aktywna”, a karta Użytkownika w menedżerze zadań jest niedokładna.
źródło
Odpowiedzi:
Windows 8, podobnie jak prawie wszystkie współczesne systemy operacyjne, robi wszystko, aby zużywać jak najwięcej pamięci. Dlaczego? Ponieważ każda niewykorzystana pamięć jest na zawsze marnowana.
Jeśli system ma 8 GB pamięci i używa tylko 7 GB, nic nie zyskuje. Nie może później użyć 9 GB. Po prostu na zawsze stracił jakąkolwiek korzyść z dodatkowego 1 GB, o ile pamięć była wolna.
Załóżmy na przykład, że twój system ma dużo wolnej pamięci RAM i uruchamiasz jakiś program. Po zakończeniu programu system ma dwie możliwości. Może przechowywać program (rzeczywisty plik wykonywalny na dysku) w pamięci lub może zwolnić pamięć, w której znajdował się plik programu.
Jeśli uwolni pamięć, musi zadać sobie trud uwolnienia jej. Jeśli kiedykolwiek chce ponownie użyć tej pamięci, musi zadać sobie trud jej uwolnienia. A jeśli ten program zostanie ponownie uruchomiony, należy go załadować z dysku. Potrójne fuj.
Jeśli nie zwalnia pamięci, nie musi zadawać sobie trudu, aby ją uwolnić. jeśli chce wykorzystać tę pamięć do innych celów, nie musi się tym przejmować, oszczędzając krok. A jeśli program zostanie ponownie uruchomiony, nie trzeba go ładować z dysku. Potrójne zwycięstwo. I oczywiście, ponieważ żaden proces obecnie nie uruchamia tego programu, pamięć nie zostanie skojarzona z żadnym procesem.
Tak więc dzieje się tak, że twój system ma wystarczającą ilość wolnej pamięci, aby mógł działać w bardzo wydajny sposób, nie marnując wysiłku, czyniąc pamięć niepotrzebnie niepotrzebną, a następnie nie musi marnować wysiłku na zwolnienie pamięci, aby z niej skorzystać. Zamiast tego może skutecznie przenosić pamięć z jednego użycia do drugiego, a jeśli dane w tej pamięci okażą się potrzebne, można uniknąć wejścia / wyjścia dysku.
Wszystko wokół jest zwycięstwem. Pamięć przechowuje dane, które system ma nadzieję, że jakiś przyszły proces może okazać się użyteczny, a także pozwala uniknąć obcych podróży przez listę wolnych pamięci, aby zwolnić pamięć tylko po to, aby zaznaczyć ją ponownie. Nowoczesne systemy operacyjne muszą utrzymywać bardzo małą ilość wolnej pamięci, wystarczającą do obsługi sytuacji awaryjnych (takich jak awarie strony i żądania pamięci z kodu przerwania), w których nie można łatwo przenieść pamięci z jednego użycia do drugiego.
źródło