„Licznik stron na sekundę to licznik do obejrzenia, ale nie powinieneś się tym przejmować” zamianą ”, ponieważ system Windows nie używa pliku stronicowania jak * nixes.
Najpierw musisz zrozumieć, że strony systemu Windows nie są wyłączone. Zacytuję odpowiednią część posta na blogu Erica Lipperta (lekko zredagowanego), ponieważ sam nie mogę tego lepiej powiedzieć:
„Pamięć RAM można postrzegać jedynie jako optymalizację wydajności. Dostęp do danych w pamięci RAM, gdzie informacje są przechowywane w polach elektrycznych, które rozprzestrzeniają się z prędkością zbliżoną do prędkości światła, jest znacznie szybszy niż dostęp do danych na dysku, gdzie informacje są przechowywane w ogromnej, ciężkiej cząsteczki metali żelaznych
System operacyjny śledzi, które strony pamięci, z których najczęściej uzyskuje się dostęp do procesów, i wykonuje ich kopię w pamięci RAM, aby uzyskać wzrost prędkości. Gdy proces uzyskuje dostęp do wskaźnika odpowiadającego stronie, która nie jest obecnie buforowana w pamięci RAM, system operacyjny powoduje „błąd strony”, wychodzi na dysk i wykonuje kopię strony z dysku na pamięć RAM, przyjmując uzasadnione założenie że wkrótce znów będzie dostępny.
System operacyjny jest również bardzo inteligentny, jeśli chodzi o udostępnianie zasobów tylko do odczytu. Jeśli oba procesy ładują tę samą stronę kodu z tej samej biblioteki DLL, system operacyjny może współużytkować pamięć podręczną RAM między dwoma procesami. Ponieważ kod prawdopodobnie nie zostanie zmieniony przez żaden proces, rozsądnie jest zapisać zduplikowaną stronę pamięci RAM, udostępniając ją.
Ale nawet przy sprytnym udostępnianiu, w końcu w tym systemie buforowania zabraknie pamięci RAM. Kiedy tak się dzieje, system operacyjny zgaduje, które strony będą prawdopodobnie wkrótce ponownie dostępne, zapisuje je na dysku, jeśli zostały zmienione, i zwalnia pamięć RAM, aby odczytać coś, co jest bardziej prawdopodobne, że będzie ponownie dostępne wkrótce.
Gdy system operacyjny zgadnie niepoprawnie lub, co bardziej prawdopodobne, gdy po prostu nie ma wystarczającej ilości pamięci RAM, aby zapisać wszystkie często używane strony we wszystkich uruchomionych procesach, komputer zaczyna „przeładowywać”. System operacyjny spędza cały swój czas na pisaniu i odczytywaniu drogiej pamięci dyskowej, dysk działa nieprzerwanie i nie wykonuje się żadnej pracy.
Oznacza to również, że „brak pamięci RAM” rzadko powoduje błąd „brak pamięci”. Zamiast błędu powoduje to obniżenie wydajności, ponieważ pełny koszt faktu, że miejsce na dysku faktycznie znajduje się na dysku, nagle staje się istotny.
Innym sposobem spojrzenia na to jest to, że całkowita ilość pamięci wirtualnej, którą zużywa Twój program, nie jest tak naprawdę bardzo istotna z punktu widzenia jego wydajności. Istotna jest nie całkowita ilość zużytej pamięci wirtualnej, ale (1) ile tej pamięci nie jest współdzielone z innymi procesami, (2) jak duży jest „zestaw roboczy” często używanych stron, i ( 3) czy zestawy robocze wszystkich aktywnych procesów są większe niż dostępna pamięć RAM.
Do tej pory powinno być jasne, dlaczego błędy „brak pamięci” zwykle nie mają nic wspólnego z ilością posiadanej pamięci fizycznej ani z ilością dostępnej pamięci. Prawie zawsze chodzi o przestrzeń adresową, która w 32-bitowym systemie Windows jest stosunkowo niewielka i łatwo ulega fragmentacji. „
Kilka dodatkowych punktów:
- biblioteki dll i pliki programów są zawsze tylko stronicowane, nigdy nie są usuwane, ponieważ znajdują się już na dysku (i zwykle pierwsze strony są zwalniane, gdy fizyczny RAM jest niski)
- o wiele bardziej prawdopodobne jest, że zabraknie Ci wolnych wpisów w tablicy stron lub będziesz mieć mocno frustrowaną pamięć niż jakiekolwiek inne problemy z pamięcią (inne niż ogólna słaba wydajność, jak już wspomniano
- nawet jeśli działasz bez pliku strony, nadal możesz mieć błędy strony
- Mówiąc ogólnie, pamięć zaangażowana mówi więcej o tym, jak proces wykorzystuje pamięć
aby zobaczyć pełny obraz zarządzania pamięcią w systemie Windows
Menedżer pamięci wirtualnej w systemie Windows NT
jeśli uważasz, że masz problem z pamięcią, najpierw sugeruję obejrzenie tej prezentacji na temat rozwiązywania problemów z pamięcią systemu Windows
Oto świetne wyjaśnienie, dlaczego czasami „brakuje pamięci”, gdy nie jest to spowodowane fragmentacją pamięci:
Zobacz także Przekraczanie granic systemu Windows: pamięć fizyczna
Więcej informacji na temat pamięci wirtualnej, fragmentacji i wycieków pamięci oraz WOW64
RAM, pamięć wirtualna, plik stronicowania i tak dalej (obsługa Microsoft)
Aktualizacja:
Windows 10 robi coś innego z pamięcią i z czasem zobaczysz proces o nazwie „Pamięć systemowa i skompresowana”. Windows 10 dodaje „magazyn kompresji” do listy stronicowania. Ten RAM jest pamięcią UŻYTKOWNIKA, która jest własnością systemu (zazwyczaj system miał tylko pamięć jądra). Pamięć ta jest kompresowana w celu zmniejszenia średniej do około 30%. Pozwala to na przechowywanie większej liczby stron w pamięci (dla tych, którzy wykonują matematykę, czyli o 70% więcej miejsca) Należy pamiętać, że jeśli pamięć nadal ma presję, strony ze sklepu kompresji (tryb użytkownika System przestrzeni systemowej) można umieścić na zmodyfikowanym lista (skompresowana), którą można zapisać w fizycznym pliku stronicowania. System zobaczy, że pochodzą one z przestrzeni trybu użytkownika systemu i są skompresowane, i nie będzie próbował umieścić ich z powrotem w sklepie. Tak więc w systemach Windows 10 może to wyglądać, jakby system wdychał RAM, ale w rzeczywistości stara się być bardziej wydajny w użyciu RAM. Użytkownicy komputerów Mac używają podobnej funkcji od 2013 roku, a nowsze wersje jądra Linuksa używają wersji kompresji pamięci. Ta metoda oszczędzania pamięci jest nie tylko lepsza, ale już powszechna wśród innych systemów operacyjnych.