Jeśli / Kiedy odzyskiwana jest pamięć deallocated sterty?
Przeprowadzałem testy pamięci nocnej na wbudowanym systemie Linux. Za pomocą vmstat zauważyłem, że wolna pamięć stale maleje z czasem. Według niektórychsmaps analiza wprocfs, stos jednego procesu rośnie w przybliżeniu w tym samym tempie. Podejrzewałem wyciek pamięci i znalazłem kilka miejsc w kodzie gdzienew
idelete
są regularnie używane. Nie widziałem jednaknew
połączenia bez dopasowaniadelete
połączenia.
Ponownie uruchomiłem test pamięci i dziś rano wyczyściłem pamięć podręczną za pomocą następującego połączenia
echo 3 > /proc/sys/vm/drop_caches
Wolna pamięć wymieniona w vmstat spadła do wartości zbliżonej do momentu rozpoczęcia testu.
Czy jądro regularnie odzyskuje nieużywane strony sterty? Jeśli tak, to czy są inne czasy poza tym, co powyżej? Prawdopodobnie gdy wolna pamięć spadnie poniżej pewnego progu?