Jak zwolnić pamięć „całkowicie hibernując” proces?

10

Podobnie do tego: Jak „hibernować proces” w systemie Linux / Windows?

Czy są jakieś metody hibernacji procesu w taki sposób, aby nie pozostawał on w pamięci? Np .: Jeśli nie chcę korzystać z Firefoksa i nie chcę zamykać tego procesu, a potrzebuję wolnej pamięci, to jak mogę naprawdę zahibernować proces, aby pamięć zarezerwowana przez Firefoksa została zwolniona?

Potrzebuję rozwiązania dla systemu Windows i Linux!

LanceBaynes
źródło

Odpowiedzi:

4

Jeśli nie chcę korzystać z Firefoksa i nie chcę zamykać tego procesu, a potrzebuję wolnej pamięci, to jak naprawdę mogę hibernować proces, aby pamięć zarezerwowana przez Firefoksa została zwolniona?

W systemie Windows dostępna jest Free Process Freezer .

W systemach Linux i Mac OS X istnieje CrypoPID , jak wspomniano w odpowiedzi yeedl .


Jeśli chcesz znaleźć niestandardowe rozwiązanie:

Zajrzyj do process dumpingsystemu Windows, np. ProcDump , wznów go za pomocą debugera CLI z WinDBG .

Zajrzyj do core dumpingLinuksa, np. core , wznów to z debuggerem CLI, takim jak GNU GDB .

Założę się, że możliwe jest rozwiązanie oparte na oprogramowaniu, które nie wymaga debuggera, ale dotyczy to przepełnienia stosu .


Szukasz bardzo konkretnego przypadku użycia, dlaczego po prostu go nie zawiesić i nie zamienić?

Poświęcasz więcej czasu na uruchamianie i zawieszanie procesów ...

Wierzę, że możesz zoptymalizować przepływ pracy w inny sposób, który byłby bardziej płynny.

Tamara Wijsman
źródło
5

Zarówno Windows, jak i Linux / Unix umożliwiają zawieszenie lub zatrzymanie wykonywania procesu poprzez usunięcie go z listy uruchomionych procesów.

Nie wpływa to bezpośrednio na strony pamięci będące własnością procesu, ale z czasem, gdy system jest pod presją pamięci, strony te będą dobrymi kandydatami do zamiany na dysk.

Próba napisania procesu na dysk w celu późniejszego wznowienia nie zadziała w przypadku niczego niebanalnego. Otwarte uchwyty do sieci i systemu okienkowego przestaną działać, gdy tylko proces zostanie wznowiony.

Phil
źródło
Nie zadziałałoby to również na nic trywialnego. :) +1
użytkownik541686,
1
Te otwarte uchwyty są po prostu ponownie otwierane lub przechowywane razem, więc to nie jest tak naprawdę problem ...
Tamara Wijsman,
2

Wiem, że w Firefoksie możesz zapisać sesję.

W systemie Linux można to zrobić za pomocą CrypoPID .

To i to pytanie próbują odpowiedzieć na to pytanie w systemie Windows, ale nie mogłem znaleźć świetnego rozwiązania zapisania stanu aplikacji do pliku, tak jak to zrobiłem dla Linuksa.

yeedl
źródło
1

Dla Windowsa:

Nie znam żadnego sposobu na całkowite usunięcie procesu z pamięci bez jego zabijania, ale można przyciąć jego zestaw roboczy, minimalizując jego okno główne. Microsoft ma artykuł wyjaśniający to: Zestaw roboczy aplikacji jest przycinany, gdy jego okno najwyższego poziomu jest zminimalizowane .

Najpierw zminimalizuj główne okno (okna), a następnie zawiesz proces zgodnie z sugestią w połączonym pytaniu .

Możesz to osiągnąć za pomocą zawsze przydatnego Eksploratora procesów .

  • Proces kliknięcia prawym przyciskiem myszy, Okno -> Minimalizuj
  • Kliknij ponownie prawym przyciskiem myszy, Zawieś.
Hugh Allen
źródło
1

W systemie Windows niektóre programy mogą wymieniać „nieużywaną” pamięć programu.
Przykładem takiego produktu jest komercyjny proces Process Lasso .
Jednak nawet Process Lasso odradza tę praktykę.

Z The Truth about Windows Memory Optimizers :

Zarządzanie pamięcią wirtualną najlepiej pozostawić Windowsowi i nie brać jej w swoje ręce. Wszelkie korzyści z tych programów są iluzją i są tymczasowe. Wcześniej czy później ponosisz kary za pamięć stronicowania, nawet jeśli wydaje się, że program uruchamiany po czyszczeniu ładuje się szybciej.

Jeśli chodzi o Firefoksa, zobacz MozillaZine's Zmniejszenie zużycia pamięci - Firefox , który zawiera wiele porad, jak dowiedzieć się, które rozszerzenia wyciekają pamięci.

Istnieje również rozszerzenie Firefox Fox Memory, które:

Próba zmniejszenia zużycia pamięci RAM przeglądarki, co sprzyja zwiększeniu dostępnej pamięci RAM dla innych procesów aplikacji. Mam nadzieję, że sprzyjanie wszelkim próbom odzyskiwania i przechowywania pamięci.

Z mojego doświadczenia wynika, że ​​to rozszerzenie jedynie opóźnia nieuchronny nadmuch pamięci w przeglądarce Firefox. Jedynym prawdziwym rozwiązaniem jest od czasu do czasu zamknięcie Firefoksa w celu uwolnienia pamięci.

harrymc
źródło
1

Możesz wysłać sygnał STOP do procesów w systemie Linux. Zatrzymany proces jest jak wstrzymany . Aby wznowić, wyślij sygnał CONT procesu. Aby wysłać sygnał, możesz to zrobić:

kill -STOP process_id

kill -CONT process_id

Zatrzymany proces zostanie zamieniony, jeśli system wymaga więcej pamięci.

Xolve
źródło