Jaka jest różnica między pamięcią rzeczywistą, wirtualną, współdzieloną i prywatną?

63

Różne kolumny w monitorze aktywności są nieco mylące

Jacob Gorban
źródło
Warto zauważyć, że istnieje piąty typ pamięci, jeśli klikniesz „Sprawdź” w procesie w porównaniu z kolumnami w Monitorze aktywności. W szczególności istnieją dwa rodzaje pamięci „wirtualnej”: „Rozmiar pamięci wirtualnej” i „Pamięć wirtualna prywatna”. To ostatnie jest pokazane w kolumnie „Wirtualna pamięć” w Monitorze aktywności.
drfrogsplat

Odpowiedzi:

46

Na podstawie mojej odpowiedzi z winy serwera :

Żargon pamięci Mac OS X:

Przewodowy : Odnosi się do kodu jądra i tym podobnych. Pamięć, której nigdy nie należy przenosić z pamięci RAM. Znany również jako pamięć rezydentna.

Shared : Pamięć współdzielona przez dwa lub więcej procesów. Oba procesy pokazałyby taką ilość pamięci, więc może być nieco mylące, ile pamięci faktycznie jest w użyciu.

Rzeczywiste : Jest to „rzeczywiste” użycie pamięci przez aplikację, zgłaszane przez task_info () - przybliżona liczba fizycznych stron, które ma bieżący proces. (RSIZE)

Prywatne : jest to pamięć, z której proces korzysta wyłącznie samodzielnie, która jest używana w pamięci rezydentnej. (RPRVT)

Wirtualny : Łączna ilość przestrzeni adresowej w procesie, która jest odwzorowana na cokolwiek - niezależnie od tego, czy jest to dowolnie duża przestrzeń na zmienne, czy cokolwiek innego - nie jest równa faktycznemu użyciu maszyny wirtualnej. (VSIZE)

Aktywna : pamięć jest obecnie oznaczona jako aktywna i używana jest pamięć RAM.

Nieaktywna : „Nieaktywna pamięć nie jest już używana i została buforowana na dysk. Pozostanie w pamięci RAM, dopóki inna aplikacja nie zajmie miejsca. Pozostawienie tych informacji w pamięci RAM jest korzystne, jeśli wrócisz (lub klient komputera) do tego później ”. - Pomoc Mac OS X.

Bezpłatnie : ilość pamięci RAM faktycznie dostępnej bez żadnych danych.


Najlepszą dokumentacją, jaką znam (i którą mogłem znaleźć w dalszych badaniach), jest własny artykuł Apple dotyczący zarządzania pamięcią na ich stronie internetowej dla programistów.

Inne wartościowe źródła: lista dyskusyjna Darwin-dev: [ 1 ], [ 2 ] oraz stary artykuł na MacOSXHints . Ponadto Mike Ash opublikował dobre wprowadzenie dla laika na swoim blogu

Chealion
źródło
5
Po przeczytaniu dokumentu Apple Managing Memory dokument Inactive niekoniecznie został umieszczony w pamięci podręcznej na dysk. Możesz to zademonstrować, jeśli sprawdzisz zużycie nieaktywnej pamięci (moja obecnie wynosi 747,5 MB) i „Użyto wymiany” (moja obecnie ma 0 bajtów). Nieaktywny odnosi się tylko do stron pamięci, które nie zostały ostatnio odczytane / zapisane przez żaden proces.
drfrogsplat
1
Warto wyjaśnić „Wirtualny”, ponieważ istnieją dwa odniesienia do „Wirtualnej” pamięci w monitorze aktywności. Kolumna „ Wirtualna pamięć ” odnosi się do „ Wirtualnej pamięci prywatnej ” w oknie Inspect Process, a następnie w tym oknie jest inny po prostu zatytułowany wpis „ Virtual Memory Size ” (który moim zdaniem jest wspólnym składnikiem pamięci wirtualnej). To jest 10.6.4 (w przypadku, gdy Monitor aktywności zmienił terminologię ...)
drfrogsplat
Czy „prywatna pamięć” jest częścią „prawdziwej pamięci”?
Franklin Yu
6

Prawdziwa pamięć dotyczy pamięci fizycznej (rzeczywiste moduły RAM w komputerze). Virtual Mem to ilość „fałszywej” pamięci przydzielonej procesowi, co oznacza pamięć przydzieloną na stałym nośniku pamięci (dysk twardy, dysk SSD itp.) Dla tego procesu. Pamięć współdzielona to pamięć fizyczna (rzeczywista), którą można współdzielić z innymi procesami. Pamięć prywatna to „prawdziwa” pamięć, z której może korzystać tylko proces, do którego została przydzielona.

Te objaśnienia mogą również pomóc ... bezpośrednio z monitora aktywności -> pomoc -> przeglądanie użycia pamięci systemowej:

Oto wyjaśnienie niektórych informacji wyświetlanych w dolnej części okienka pamięci:

  • Przewodowy: Pamięć przewodowa zawiera informacje, które zawsze muszą pozostać w pamięci RAM
  • Aktywna: aktywna pamięć zawierająca informacje, które są aktywnie wykorzystywane.
  • Nieaktywna: pamięć nieaktywna zawiera informacje, które nie są aktywnie wykorzystywane. Pozostawienie tych informacji w pamięci RAM jest korzystne, jeśli wrócisz (lub klient twojego komputera) później.
  • Używane: używana pamięć jest używana przez proces lub system. Użyta pamięć to suma pamięci przewodowej, aktywnej i nieaktywnej. Jeśli system wymaga pamięci, zajmuje wolną pamięć przed użyciem pamięci.
  • Wolne: wolna pamięć nie jest używana i jest natychmiast dostępna.
  • Rozmiar maszyny wirtualnej: pamięć wirtualna lub maszyna wirtualna to miejsce na dysku twardym, które można wykorzystać jako pamięć. Rozmiar maszyny wirtualnej to ilość miejsca na dysku wykorzystywana jako pamięć. Mac OS X może zużywać więcej pamięci niż ilość posiadanej fizycznej pamięci RAM. Dysk twardy jest znacznie wolniejszy niż pamięć RAM, więc system pamięci wirtualnej automatycznie dystrybuuje informacje między miejscem na dysku a pamięcią RAM w celu zapewnienia wydajności. Wejścia / wyjścia strony: liczba gigabajtów informacji Mac OS X przesunął się między pamięcią RAM a miejscem na dysku
Robert S. Ciaccio
źródło
6
To nie jest poprawne. Pamięć wirtualna nie jest pamięcią przydzieloną na dysku (to się nazywa zamiana). Pamięć wirtualna ma przydzieloną przestrzeń adresową, ale nie znajduje się w pamięci fizycznej. To może wydawać się tym samym, ale subtelnie różne. W wielu przypadkach programy przydzielają pamięć bez jej dotykania. W takich przypadkach programy używają dużej ilości pamięci wirtualnej. Aby dać konkretny przykład, mój system obecnie używa 512 MB wymiany, ale ma przydzieloną 196 GB pamięci wirtualnej (co jest dość typową ilością dla osób korzystających z systemu Snow Leopard na K64).
Louis Gerbarg,
2
@Louis, jeśli pamięć wirtualna została przydzielona, ​​ale nie korzysta z pamięci RAM lub dysku twardego, to gdzie ona jest?
Michael Underwood,
4
@Michael: nigdzie. To jest teoretyczne. Tylko dlatego, że został przydzielony i przypisany adres, niekoniecznie oznacza, że ​​faktycznie jest używany. Bity niskiego poziomu systemu operacyjnego wiedzą, kiedy mapować te adresy do fizycznych lokalizacji w pamięci RAM lub pamięci masowej, ale nie ma potrzeby ograniczania tej przestrzeni, jeśli aplikacja nie przechowuje informacji pod tymi adresami. Co więcej, zauważysz, że kolumna dla każdego procesu, Virtual Mem, nie zbliża się do zsumowania do rozmiaru maszyny wirtualnej. Procesy nie wykorzystują całej pamięci.
Robert S Ciaccio,
2
Istnieje wiele maszyn wirtualnych, których w rzeczywistości nie można zamienić. Na przykład, jeśli zmapujesz plik 4 GB, zajmie 4 GB VM, po przeczytaniu przejdzie bezpośrednio z pliku i pod presją zostanie wyrzucony (nie zamieniony), ponieważ oryginalny plik można po prostu ponownie odczytać. VM i zamiana to naprawdę zupełnie różne rzeczy, VM jest po prostu używane, aby dowiedzieć się, co zamienić.
Louis Gerbarg
3
Przez VSIZE mam na myśli coś, co nie jest wymienione w monitorze aktywności, możesz zobaczyć to na górze, jeśli chcesz. To, co Monitor aktywności wyświetla w kolumnie pamięci wirtualnej, to tak zwane VPRVT, czyli ilość adresu wirtualnego używanego przez aplikację, która nie jest udostępniana innym aplikacjom.
Louis Gerbarg,
4

Apple zaktualizowało Monitor aktywności w OSX 10.9 (Mavericks). Mają dobry artykuł o tym, co wszystko tutaj oznacza http://support.apple.com/kb/HT5890 . W podsumowaniu...

wprowadź opis zdjęcia tutaj

  • Pamięć fizyczna: ilość zainstalowanej pamięci RAM.
  • Wykorzystana pamięć: ilość pamięci RAM, która jest używana i nie jest natychmiast dostępna dla innych aplikacji.
  • Pamięć wirtualna: ilość mapowania pamięci, o które prosiły aplikacje. To nie jest rzeczywiste zużycie zasobów pamięci RAM, a jego wielkość zależy od autora aplikacji.
  • Zamień używane: Miejsce na twoim dysku używane do wymiany nieużywanych plików do iz pamięci RAM. Widać trochę aktywności i nie świadczy to o wyczerpaniu zasobów pamięci RAM. Widzenie presji pamięci w stanie czerwonym wskazuje, że zasoby pamięci RAM są wyczerpane.
  • Pamięć aplikacji: ilość miejsca wykorzystywanego przez aplikacje.
  • Przewodowa pamięć: pamięć, której nie można buforować na dysk, dlatego musi pozostać w pamięci RAM. Pamięci tej nie mogą pożyczyć inne aplikacje.
  • Skompresowany: Ilość skompresowanej pamięci RAM, co udostępnia więcej zasobów pamięci RAM dla innych aplikacji.
  • Pamięć podręczna plików: Miejsce w pamięci RAM oznaczone jako dostępne dla aplikacji, które zawiera ostatnio używane pliki.

Wykres ciśnienia w pamięci

Połączenie statystyk wolnej, przewodowej, aktywnej, nieaktywnej i zużytej pamięci w poprzednich wersjach Monitora aktywności zostało zastąpione w Mavericks czytelnym wykresem „Ciśnienie pamięci”.

Ciśnienie pamięci jest wskazywane kolorem:

  • Zielony - zasoby pamięci RAM są dostępne.
  • Amber - zadania pamięci RAM.
  • Czerwony - zasoby pamięci RAM są wyczerpane, a system OS X używa napędu pamięci.
Ryan
źródło