Когда я запускаю htop (в OS X 10.6.8), я вижу что-то вроде этого:
1 [||||||| 20.0%] Tasks: 70 total, 0 running 2 [||| 7.2%] Load average: 1.11 0.79 0.64 3 [|||||||||||||||||||||||||||81.3%] Uptime: 00:30:42 4 [|| 5.8%] Mem[|||||||||||||||||||||3872/4096MB] Swp[ 0/0MB] PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command 284 501 57 0 15.3G 1064M 0 S 0.0 6.5 0:01.26 /Applications/Firefox.app/Contents/MacOS/firefox -psn_0_90134 437 501 57 0 14.8G 785M 0 S 0.0 4.8 0:00.18 /Applications/Thunderbird.app/Contents/MacOS/thunderbird -psn_0_114716 428 501 63 0 12.8G 351M 0 S 1.0 2.1 0:00.51 /Applications/Firefox.app/Contents/MacOS/plugin-container.app/Contents/MacOS/ 696 501 63 0 11.7G 175M 0 S 0.0 1.1 0:00.02 /System/Library/Frameworks/QuickLook.framework/Resources/quicklookd.app/Conte 38 0 33 0 11.1G 422M 0 S 0.0 2.6 0:00.59 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framewo 183 501 48 0 10.9G 137M 0 S 0.0 0.8 0:00.03 /System/Library/CoreServices/Finder.app/Contents/MacOS/Finder
Как я могу использовать процессы, использующие гигабайты памяти VIRT, но при этом использовать 0 МБ подкачки?
VIRT
не имеет ничего общего с используемой памятью (виртуальной или иной), но с используемой адресное пространство, который не так связан, как вы думаете.
В современных операционных системах (включая OSX) есть функция, называемая пейджинг по запросу который работает, сообщая операционной системе о необходимости сопоставить определенную область виртуального адресного пространства с файлом (например, с общей библиотекой / DLL). Только когда программа пытается прочитать эти виртуальные адреса, файл загружается в память.
Если эти разделяемые библиотеки фактически являются общими, тогда операционная система фактически будет разделять физическую память между несколькими процессами; То есть значительная часть этих десятков гигабайт - это не только библиотеки с файловой поддержкой, но и тем же библиотеки с файловой поддержкой.
Кроме того, если требуется временная память (для данных; настройки, растровые изображения, звуки и т. Д.) И нет неиспользуемых физических страниц, операционная система фактически отбрасывает содержимое этих областей с файловой поддержкой и передает их вашему приложению. . Если эти страницы понадобятся снова, операционная система может просто перезагрузить их с диска.
Замена (SWP
) - это специальная файловая область для этой рабочей памяти. Создание пространства подкачки позволит операционной системе перемещать эту рабочую память на диск вместо (используемой более запущенными процессами) разделяемых библиотек, в целом улучшая производительность и, что, возможно, наиболее удивительно, производить Меньше свопинг, чем отсутствие места подкачки вообще.
У вас еще есть свободная память. Система не меняет местами, потому что в этом еще не было необходимости ... но опять же, я заметил кое-что странное - насколько я могу судить, у вас не настроено пространство подкачки. В одной из моих (Linux) систем он читает
CPU[|||||||||||||||||||| 63.2%] Tasks: 89, 114 thr; 1 running
Mem[||||||||||||||||| 167/1001MB] Load average: 0.19 1.13 0.75
Swp[ 0/1021MB] Uptime: 00:06:54
например.
Я не уверен, что это причуда OS X или какая-то другая проблема - вы можете проверить это с помощью монитор активности