Wiem, że VSZ ps
jest dla całkowitej przestrzeni adresowej przydzielonej dla aplikacji i czasami jest aliasowany jako vsize (wspomniany na stronie ps
podręcznika man w systemie Linux), ale jaka jest definicja VSIZE top
? To najlepsze wyjście z iPhone'a jest inne niż najlepsze w Linuksie:
PID COMMAND %CPU TIME #TH #PRTS #MREGS RPRVT RSHRD RSIZE VSIZE
1875 emma 0.0% 0:30.83 7 139 932 17868K 5328K 29M 181M
root# ps -eo pid,rss,vsz|grep 1875
1875 29324 441324
top
w IOS nie zawiera współdzielonych obiektów w vsize lub coś w tym rodzaju.Odpowiedzi:
System pamięci Linux jest wypełniony wieloma procedurami narzędzi do optymalizacji pamięci i współdzielenia pamięci, co sprawia, że sama koncepcja dzielenia się pamięcią i korzystania z niej jest uciążliwa. Wyjściowe polecenia ps i inne polecenia powiązane z psami przetwarzają dane wyjściowe z danych w
/proc
systemie plików. Szczególnieps
, RSS (pamięć wielkości rezydentnej) i VSIZE (wielkość pamięci wirtualnej) są ważne, jednak VSIZE nie pokazuje dokładnego wykorzystania pamięci, a różnica między VSIZE i rss jest tym, co jest rzeczywiście zamierzone i przydzielone programowi podczas inicjalizacji, ale może jeszcze się nie odwoływać. Podobnie jak program może mieć wiele bibliotek połączonych, ale nie są one jeszcze załadowane, ponieważ nie są jeszcze przywoływane w rzeczywistym środowisku uruchomieniowym programu. RSS podaje całkowitą pamięć faktycznie używaną przez program, ale może nie dawać prawdziwego obrazu zużycia pamięci, ponieważ większość przydzielonej pamięci może być współdzielona z innymi instancjami tego samego procesu lub innych procesów. Spoglądanie w dół/proc/<processid>/maps
może dać przybliżone wyobrażenie o tym, jak pamięć została wykorzystana, ale są one czasem mylące. Posługiwać siępmap -x <pid>
z wiersza poleceń, przydatne jest, aby zobaczyć rozkład.Często lepszymi narzędziami są
free
ivmstat
.free
poda ogólne informacje o bieżącym zużyciu pamięci, a za pomocą vmstat można sprawdzić, jak często jest aktualizowana.źródło