To pytanie ma już odpowiedź tutaj:
Menedżer zadań pokazuje moje całkowite użycie pamięci na poziomie 90% mojej całkowitej 6 GB, ale żaden pojedynczy proces nie zużywa więcej niż 250 MB pamięci RAM, a suma wykorzystania pamięci RAM przez wszystkie uruchomione procesy jest mniejsza niż 2 GB. Próbowałem:
- Patrząc na liczby w kolumnie „Pamięć” na karcie „Procesy” w Menedżerze zadań Windows 8.
- Patrząc na kolumny „Zestaw roboczy”, „Prywatny zestaw roboczy”, „Wspólny zestaw roboczy” i „Rozmiar zatwierdzenia” na karcie „Szczegóły” w Menedżerze zadań.
- Patrząc na podobne kolumny związane z pamięcią w Process Explorer.
- Próbowałem uruchomić Sysinternals RAMMap, ale gdy mam kryzys niskiej pamięci, zawiesza się przy uruchomieniu. Po rozwiązaniu problemu RAMMap działa normalnie, ale w tym momencie jest już za późno.
Wszystkie pokazują dość małą ilość używanej pamięci.
Wiele osób zadaje warianty tego pytania z różnymi wersjami systemu Windows w całym Internecie. Niektórym z nich udało się rozwiązać problemy z brakiem pamięci, często przez ponowną instalację oprogramowania; czasami przez ponowną instalację systemu Windows od zera. Szukam odpowiedzi na ogólne pytania, na które te wszystkie pytania się zgadzają, i na które nigdy nie wydaje się, aby uzyskać odpowiedź gdzie indziej:
- Dlaczego łączna używana pamięć jest znacznie wyższa niż pamięć wykorzystywana przez wszystkie wymienione procesy, bez względu na to, jak próbuję je policzyć?
- W jaki sposób system Windows mógł „wiedzieć”, że pamięć jest używana, nie wiedząc, który program jej używa?
- Jakie procesy mogą zużywać pamięć, ale nie pojawiają się na liście?
- Czy istnieje oprogramowanie, które może dostarczyć więcej informacji na temat używanej pamięci?
Szczegóły specyficzne dla mojego problemu: Od czasu uaktualnienia do systemu Windows 8.1 problem pojawia się natychmiast po zalogowaniu. Skończy mi się pamięć, jak tylko uruchomię jakiś program. Zauważyłem w Process Explorer, że uruchomiono kilka instancji iexplore.exe, najwyraźniej uruchomionych automatycznie. Jednym z konkretnych przypadków było użycie tylko kilku MB pamięci RAM, ale pokazało setki milionów błędów stron. Pod wpływem kaprysu zabiłem ten konkretny proces, a użycie pamięci natychmiast spadło o 70%.
Prowadząc do jednego konkretnego pytania:
- Jak zabicie jednego procesu, który podobno zużył tylko kilka MB, może zwolnić kilka GB?
I (prawdopodobnie trudne) pytanie bonusowe:
- Jak mogę zrezygnować z ponownej instalacji systemu Windows za każdym razem, gdy uruchamiam ponownie komputer?
źródło
Odpowiedzi:
Nawiasem mówiąc, powinieneś starać się nie używać terminu „pamięć”. Powoduje to wiele zamieszania. Jeśli masz na myśli pamięć fizyczną, powiedz „pamięć fizyczna” lub „RAM”. Jeśli masz na myśli pamięć wirtualną, powiedz to. Jeśli masz na myśli sklep z podkładem, powiedz to.
Ponieważ system operacyjny nie marnuje pamięci fizycznej (RAM), chyba że nie ma wyboru.
Ponieważ żaden program go nie używa. Rozważmy na przykład pamięć zawierającą kod właśnie zakończonego programu. Żaden program go nie używa. Ale ta pamięć jest używana, ponieważ nie jest wolna i zawiera dane, które mogą być przydatne (na wypadek, gdyby program uruchomił się ponownie).
Nie jest wykorzystywany przez procesy.
RAMMap może to zrobić.
Istnieją tylko dwie możliwości: można użyć pamięci RAM lub zmarnować. Oczywiście pierwszy jest lepszy. Każda wolna pamięć jest marnowana na zawsze - urządzenie o pojemności 4 GB nie może dziś zużyć 2 GB, aby jutro użyć 6 GB. Jeśli myślisz „Chcę go teraz bezpłatnie, abym mógł go później użyć”, zapomnij o tym. Możesz go użyć teraz, a później.
Kończy Ci się zapasowy sklep, a nie pamięć fizyczna. Masz dużo wolnej pamięci fizycznej, ale nie masz wystarczającej ilości kopii zapasowych dla systemu operacyjnego, aby nadal alokować pamięć wirtualną, która może wymagać tworzenia kopii zapasowych.
Proces wykorzystywał tylko kilka MB pamięci fizycznej, ale system operacyjny mógł zarezerwować dla niej kilka GB kopii zapasowej pamięci wirtualnej. Załóżmy na przykład, że proces tworzy zapisywalne, prywatne mapowanie pamięci pliku 2 GB. System operacyjny musi zarezerwować 2 GB kopii zapasowej pamięci wirtualnej dla procesu, ponieważ może zapisywać do każdego bajtu tego odwzorowania. Ponadto może nigdy nie napisać do żadnego z nich. Dlatego potrzebujesz dobrej wielkości pliku stronicowania.
Współczesne systemy operacyjne zapisują wiele testów (obiecujący magazyn kopii zapasowych), które nigdy nie zostaną zrealizowane (wymagają pamięci RAM). Nie możesz nadal wystawiać czeków (obiecujący sklep z zabezpieczeniami), nawet jeśli masz dużo pieniędzy w banku (wolna pamięć RAM), jeśli już napisałeś kilka dużych czeków, które mogą zostać zrealizowane lub nie (zrealizowane jako tyle, że wsparcie jak masz). Pliki stronicowania dodają magazyn kopii zapasowych, umożliwiając systemowi operacyjnemu zapisywanie czeków.
źródło