Nieco wcześniej, z ciekawości, napisałem program Java, który bardzo szybko zajmuje dużo pamięci. (Dodaje BufferedImages do tablicy zestawień w pętli.)
Trzymałem Monitor systemu Windows otwarty, aby obserwować zużycie pamięci RAM podczas pracy.
Kiedy uruchomiłem program, użycie pamięci RAM wzrosło bardzo szybko, a ponieważ osiągnęło około 100% moich 6 GB pamięci RAM, mój komputer stał się bardzo wolny. Po około minucie udało mi się zakończyć program i mój komputer powoli odzyskał prędkość. Zauważyłem, że zużycie pamięci najpierw spadało powoli, a potem nagle spadło do prawie 0 MB, a następnie powróciło do bezczynności na poziomie około 2-2,5 GB.
Zrobiłem zrzut ekranu użycia pamięci RAM w Monitorze systemu:
Zastanawiałem się, czy ktoś mógłby wyjaśnić, co się dzieje, gdy w komputerze zabraknie pamięci i dlaczego nie wraca do stanu bezczynności zaraz po zakończeniu programu, a raczej około 60 sekund później? Ponadto, dlaczego użycie spada do zera zamiast po prostu bezczynności?
źródło
Odpowiedzi:
Gdy zaczniesz osiągać limit pamięci głównej, system operacyjny zacznie wymieniać pamięć na dysk, aby zrobić miejsce na więcej rzeczy (nazywa się to stronicowaniem ). Dlatego komputer staje się bardzo powolny, ponieważ dysk jest waaaay wolniej niż RAM, nawet jeśli jesteś na SSD, a to również powód, program może trwać bez pamięci głównej w lewo.
Bezczynna pamięć jest często wymieniana jako pierwsza, aby aktywne programy mogły mieć jak najwięcej w pamięci RAM. Z tego powodu zużycie pamięci spada poniżej zwykłego stanu bezczynności. System zacznie ponownie zamieniać strony pamięci, a bezczynna pamięć zapełni się w końcu RAM.
źródło