Найбільш основна відповідь? Ні. ОС працює з керуванням пам'яттю для користувача - надаючи процесу стільки пам’яті, скільки потрібно, скільки цього вимагає, і не надає багато партії з точки зору можливості модифікувати роботу системи. Це не дуже допомагає розібратися, чи використання пам'яті є частиною рівняння щодо того, чому сервери Linux перевершують Mac-сервери.
Через відсутність "хакабельності" у системі віртуальної пам'яті найкращими варіантами є оцінка продуктивності віртуальної пам'яті, щоб побачити, чи це справді причина, що у вас виникають проблеми з продуктивністю - найголовніше - це використовувати vm_stat
або використовувати слідувати цьому жити, використовуючи, vm_stat [number of seconds]
щоб побачити, скільки виходу сторінок виникає. Переміщення невикористаних сторінок з оперативної пам’яті на жорсткий диск має значно меншу вартість, ніж для повернення сторінок з жорсткого диска в оперативну пам’ять. Сторінка в термінах OS X стосується 4 кб даних.
Крім того, 32-бітові процеси (наприклад, Illustrator) не можуть отримати доступ більше 4 ГБ, тому теоретично можливо мати 2 Гб вільного і втратити пам'ять, якщо у вас було встановлено 6 ГБ.
Як на вашому робочому столі, так і на серверах я би запустив vm_stat 2
і перевірив останній стовпець, особливо коли у вас виникає затримка на кілька секунд при переключенні на "Illustrator".
Щоб дізнатись, наскільки насправді великий своп, ви можете перевірити розмір заміни в «Моніторі діяльності» або запустити du -shc /var/vm/swap* | tail -n 1
.
Використання du -sh /var/vm
має одне застереження: на ноутбуках, у яких перебуває сплячий режим (будь-що за останні 4 роки чи новіші), може бути sleepimage
приблизно розмір встановленої пам’яті.
Жаргон пам'яті Mac OS X:
Провідний : Це стосується коду ядра тощо. Пам'ять, яка ніколи не повинна бути переміщена з ОЗУ. Також відомий як пам'ять резидента.
Спільний : пам'ять, яка ділиться між двома або більше процесами. Обидва процеси показали б цей об'єм пам'яті, тому це може бути трохи оманливим щодо того, скільки пам’яті фактично використовується.
Справжнє : Це "реальне" використання пам'яті для програми, як повідомляється task_info () - приблизна кількість фізичних сторінок, що мають поточний процес. (RSIZE)
Приватне : це пам'ять, яку процес використовує виключно на власній власності, яка використовується в пам'яті резидента. (RPRVT)
Віртуальна : Загальна кількість адресного простору в процесі, який відображається на будь-що - будь то довільно великий простір для змінних чи щось інше - це не прирівнюється до фактичного використання VM. (VSIZE)
Активний : пам'ять, яка в даний час позначена як активна, і використовується ОЗУ.
Неактивний : "Неактивна пам'ять більше не використовується і її кешували на диску. Вона залишатиметься в оперативній пам'яті, поки іншому додатку не знадобиться місця. Залишити цю інформацію в оперативній пам’яті вам на користь, якщо ви (або клієнт вашого комп’ютера) повернетесь до цього пізніше ». - Довідка Mac OS X
Безкоштовно : обсяг оперативної пам’яті фактично доступний без будь-яких даних.
Найкраща документація, про яку я знаю (і яку вдалося знайти під час подальших досліджень) - це власна стаття Apple про керування пам’яттю на веб-сайті розробника.
Інші варті джерела: список розсилки Дарвіна- розробок : [ 1 ], [ 2 ] та стара стаття про MacOSXHints . Крім того, Майк Еш опублікував у своєму блозі хороший вступ мирян
Можливо (я цього не пробував) відключити віртуальну систему пам’яті, запустивши sudo launchctl unload /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
та перезавантаживши так, щоб динамичний_пагер (програма, яка фактично робить розподіл віртуальної пам'яті) не запускався. Однак, оскільки ОС передбачає, що в ньому є віртуальна пам'ять, ви можете дуже швидко і швидко натрапити на проблеми. Щоб завантажити його назад, запустіть його sudo launchctl load /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
(якщо необхідно в режимі одиночного користувача)