Najbardziej podstawowa odpowiedź? Nie. System operacyjny obsługuje zarządzanie pamięcią dla użytkownika - zapewnia procesowi tyle pamięci, ile wymaga, i wymaga tego, i nie zapewnia wiele, jeśli chodzi o możliwość modyfikowania działania systemu. Nie pomaga wiele w ustaleniu, czy wykorzystanie pamięci jest częścią równania, dlaczego serwery Linux przewyższają serwery Mac.
Ze względu na brak „możliwości hakowania” w systemie pamięci wirtualnej najlepszym rozwiązaniem jest ocena wydajności pamięci wirtualnej, aby sprawdzić, czy to naprawdę powód, dla którego występują problemy z wydajnością - najbardziej podstawowe jest użycie vm_stat
lub użycie śledzenia na żywo za pomocą, vm_stat [number of seconds]
aby zobaczyć, ile stron ma miejsce. Przeniesienie nieużywanych stron z pamięci RAM na dysk twardy ma znacznie niższy koszt niż odzyskanie stron z dysku twardego do pamięci RAM. Strona w terminologii OS X odnosi się do 4kb danych.
Ponadto procesy 32-bitowe (np. Illustrator) nie mogą uzyskać dostępu do więcej niż 4 GB, więc teoretycznie możliwe jest posiadanie 2 GB wolnego miejsca i procesowi zabraknie pamięci, jeśli zainstalowano 6 GB.
Zarówno na twoim pulpicie, jak i na serwerach, uruchomiłbym vm_stat 2
i sprawdził ostatnią kolumnę - szczególnie, gdy doświadczasz wielosekundowego opóźnienia podczas przełączania na program Illustrator.
Aby dowiedzieć się, jak duża jest zamiana, możesz sprawdzić rozmiar zamiany w monitorze aktywności lub uruchomić du -shc /var/vm/swap* | tail -n 1
.
Korzystanie du -sh /var/vm
ma jedno zastrzeżenie: na laptopach, które mają tryb hibernacji (cokolwiek z ostatnich 4 lat lub nowszych), może być sleepimage
mniej więcej rozmiar zainstalowanej pamięci.
Ż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, w pamięci rezydentnej. (RPRVT)
Wirtualny : Całkowita 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 zbuforowana 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 temat MacOSXHints . Dodatkowo Mike Ash opublikował dobre wprowadzenie dla laika na swoim blogu
Może być możliwe (nie wypróbowałem tego) wyłączenie systemu pamięci wirtualnej poprzez uruchomienie, sudo launchctl unload /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
a następnie ponowne uruchomienie, aby dynamiczny pager (program, który faktycznie dokonuje alokacji pamięci wirtualnej) nie uruchomił się. Ponieważ jednak system operacyjny zakłada, że ma pamięć wirtualną, możesz bardzo szybko napotkać problemy. Aby załadować kopię zapasową, uruchom sudo launchctl load /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
(w razie potrzeby z trybu pojedynczego użytkownika)