В чем разница между реальной, виртуальной, общей и частной памятью?

63

Различные столбцы в Activity Monitor немного сбивают с толку

Джейкоб Горбан
источник
Возможно, стоит отметить, что существует 5-й тип памяти, если вы нажмете «Проверить» в процессе по сравнению со столбцами в мониторе активности. В частности, существует два типа «виртуальной» памяти: «размер виртуальной памяти» и «виртуальная частная память». Последнее показано в столбце «Виртуальная память» в Activity Monitor.
drfrogsplat

Ответы:

47

Взято из моего ответа при сбое сервера :

Mac OS X Memory Jargon:

Wired : это относится к коду ядра и тому подобному. Память, которая никогда не должна перемещаться из ОЗУ. Также известен как резидентная память.

Shared : память, которая используется двумя или более процессами. Оба процесса будут показывать этот объем памяти, поэтому он может вводить в заблуждение относительно того, сколько памяти фактически используется.

Real : это «реальное» использование памяти приложением, о котором сообщает task_info () - приблизительный подсчет количества физических страниц, которые есть у текущего процесса. (RSIZE)

Частная : это память, которую процесс использует исключительно самостоятельно и которая используется в резидентной памяти. (RPRVT)

Виртуальный : Общий объем адресного пространства в процессе, который сопоставлен с чем угодно - независимо от того, является ли он произвольно большим пространством для переменных или чего-либо еще - он не соответствует фактическому использованию виртуальной машины. (VSIZE)

Активный : Память в настоящее время помечена как активная и используется ОЗУ.

Неактивно : «Неактивная память больше не используется и была кэширована на диск. Она останется в ОЗУ, пока не понадобится место другому приложению. Если вы (или клиент вашего компьютера) вернетесь, оставьте эту информацию в ОЗУ». к этому позже. " - Справка Mac OS X

Свободно : объем ОЗУ, фактически доступный без каких-либо данных.


Лучшая документация, которую я знаю (и которую смог найти в последующих исследованиях), - это собственная статья Apple об управлении памятью на их веб-сайте для разработчиков.

Другие полезные источники: список рассылки Darwin-dev: [ 1 ], [ 2 ] и старая статья о MacOSXHints . Кроме того, Майк Эш разместил в своем блоге введение хорошего мирянина.

Chealion
источник
5
После прочтения документа Apple по управлению памятью, Inactive не обязательно кэшируется на диск. Вы можете продемонстрировать это, проверив использование неактивной памяти (у меня сейчас 747,5 МБ) и ваш «Swap used» (у меня сейчас 0 байт). Неактивные - это страницы памяти, которые не были недавно прочитаны / записаны каким-либо процессом.
drfrogsplat
1
Возможно, стоит пояснить «Виртуальный», поскольку в Activity Monitor есть две ссылки на «Виртуальную» память. Столбец « Виртуальная память » относится к « Виртуальной частной памяти » в окне проверки процесса, а затем в этом окне есть еще одна просто названная запись « Размер виртуальной памяти » (которая, как я считаю, является общей составляющей виртуальной памяти). Это на 10.6.4 (в случае, если Activity Monitor изменил терминологию ...)
drfrogsplat
Является ли «личная память» частью «настоящей памяти»?
Франклин Ю
6

Реальная память относится к физической памяти (фактическим модулям памяти на вашем компьютере). Виртуальная память - это объем «фальшивой» памяти, выделяемой процессу, то есть память, выделяемая на постоянном носителе (жестком диске, твердотельном диске и т. Д.) Для этого процесса. Общая память - это физическая (реальная) память, которую можно использовать совместно с другими процессами. Частная память - это «настоящая» память, которая может использоваться только процессом, которому она выделена.

Эти объяснения могут также помочь ... непосредственно из монитора активности -> справка -> просмотр использования системной памяти:

Вот объяснение некоторых сведений, отображаемых в нижней части панели памяти:

  • Проводной: проводная память содержит информацию, которая всегда должна оставаться в оперативной памяти
  • Активный: Активная память, которая содержит информацию, которая активно используется.
  • Неактивно: неактивная память содержит информацию, которая не используется активно. Хранение этой информации в оперативной памяти выгодно, если вы (или клиент вашего компьютера) вернетесь к ней позже.
  • Использовано: Используемая память используется процессом или системой. Используемая память - это сумма проводной, активной и неактивной памяти. Если системе требуется память, она занимает свободную память перед использованием памяти.
  • Свободно: свободная память не используется и доступна сразу.
  • Размер виртуальной машины. Виртуальная память, или ВМ, - это пространство на жестком диске, которое можно использовать в качестве памяти. Размер виртуальной машины - это объем дискового пространства, используемого в качестве памяти. Mac OS X может использовать больше памяти, чем у вас есть физическая память. Жесткий диск намного медленнее, чем ОЗУ, поэтому система виртуальной памяти автоматически распределяет информацию между дисковым пространством и ОЗУ для эффективной работы. Вход / выход страниц: количество гигабайт информации, перемещенной Mac OS X между оперативной памятью и дисковым пространством
Роберт С Чаччо
источник
6
Это не правильно. Виртуальная память - это не память, которая выделяется на диске (это называется подкачкой). Виртуальная память - это адресное пространство, выделенное, но не в физической памяти. Может показаться, что это одно и то же, но это не так. Во многих случаях программы выделяют память, даже не касаясь ее. В этих случаях программы используют много виртуальной памяти. Чтобы привести конкретный пример, моя система в настоящее время использует 512 МБ подкачки, но ей выделено 196 ГБ виртуальной памяти (что довольно типично для людей, использующих Snow Leopard на K64).
Луи Гербарг
2
@ Луис, если виртуальная память была выделена, но не использует оперативную память или жесткий диск, то где она?
Майкл Андервуд
4
@ Майкл: никуда. Это теоретически. То, что он был выделен и назначен адрес, не обязательно означает, что он фактически используется. Низкоуровневые биты ОС знают, когда сопоставлять эти адреса с физическими расположениями в ОЗУ или подкачке, но нет необходимости связывать это пространство, если приложение фактически не хранит информацию по этим адресам. Мало того, но вы заметите, что столбец для каждого процесса, Virtual Mem, не подходит близко к добавлению к размеру виртуальной машины. Процессы фактически не используют всю эту память.
Роберт С Чаччо
2
Существует множество виртуальных машин, которые на самом деле не могут быть заменены. Например, если вы отображаете файл объемом 4 ГБ, он занимает 4 ГБ виртуальной машины, при чтении он будет перенаправлен прямо из файла, и под давлением он будет выброшен (не заменен), поскольку исходный файл может быть просто перечитан. VM и обменивать действительно совершенно разные вещи, VM просто используется , чтобы выяснить , что своп в.
Луи Gerbarg
3
Под VSIZE я имею в виду то, что не указано в мониторе активности, вы можете увидеть его сверху, если хотите. То, что в столбце виртуальной памяти перечисляет Activity Monitor, обычно называется VPRVT, то есть количеством виртуальных адресов, используемых приложением, которое не используется совместно с другими приложениями.
Луи Гербарг
4

Apple обновила Activity Monitor в OSX 10.9 (Mavericks). У них есть хорошая статья о том, что все значит здесь http://support.apple.com/kb/HT5890 . В итоге...

введите описание изображения здесь

  • Физическая память: объем установленной памяти.
  • Используемая память: объем используемой оперативной памяти, который не сразу доступен для других приложений.
  • Виртуальная память: объем отображаемой памяти, запрошенный приложениями. Это не фактическое потребление ресурсов ОЗУ, а его размер определяется автором приложения.
  • Swap Used: пространство на диске, используемое для обмена неиспользуемыми файлами в оперативную память. Наблюдается некоторая активность, и это не означает, что у вас истощены ресурсы ОЗУ. Наблюдение за давлением памяти в состоянии Red будет указывать на то, что ресурсы RAM истощены.
  • Память приложения: объем пространства, используемого приложениями.
  • Проводная память: память, которую нельзя кэшировать на диск, поэтому она должна оставаться в оперативной памяти. Эта память не может быть занята другими приложениями.
  • Сжатие: объем памяти в ОЗУ, который сжимается, делая больше ресурсов ОЗУ доступными для других приложений.
  • Файловый кеш: пространство в оперативной памяти, помеченное как доступное для приложений, которое содержит недавно использованные файлы.

График давления памяти

Комбинация статистики свободной, проводной, активной, неактивной и использованной памяти в предыдущих версиях Activity Monitor была заменена в Mavericks на легко читаемый график «Memory Pressure».

Давление памяти обозначается цветом:

  • Зеленый - ресурсы оперативной памяти доступны.
  • Желтый - ресурсы оперативной памяти находятся под управлением.
  • Красный - ресурсы оперативной памяти исчерпаны, и OS X использует диск в качестве памяти.
Райан
источник