50.90. pg_shmem_allocations

В представлении pg_shmem_allocations показываются блоки памяти, выделенные в основном сегменте общей памяти сервера. Сюда входят блоки, выделенные с использованием описанных в Подразделе 36.10.10 механизмов как для самого процесса postgres, так и для расширений.

Заметьте, что в этом представлении не показываются блоки, выделенные с использованием инфраструктуры динамической общей памяти.

Таблица 50.91. Столбцы pg_shmem_allocations

Тип столбца

Описание

name text

Имя блока в общей памяти. NULL, если этот блок памяти не используется, и <anonymous>, если это анонимный блок.

off int8

Смещение, с которого начинается выделенный блок. NULL, если это анонимный блок, так как дополнительной информации о таких блоках нет.

size int8

Размер блока

allocated_size int8

В размер блока включается размер выравнивающего дополнения. Для анонимных блоков информация о дополнении недоступна, поэтому значения в столбцах size и allocated_size всегда равны. Для освобождённой памяти объём дополнения не имеет смысла, так что эти столбцы тоже будут содержать одинаковые значения.


Анонимными считаются блоки, выделенные непосредственно функцией ShmemAlloc(), а не функцией ShmemInitStruct() или ShmemInitHash().

По умолчанию представление pg_shmem_allocations могут читать только суперпользователи.