sys.dm_os_memory_objects (Transact-SQL)

SQL Server によって現在割り当てられているメモリ オブジェクトを返します。sys.dm_os_memory_objects は、主にメモリ使用状況を分析し、メモリ リークを調べるときに使用できます。

列名

データ型

説明

memory_object_address

varbinary(8)

メモリ オブジェクトのアドレス。NULL 値は許可されません。

parent_address

varbinary(8)

親メモリ オブジェクトのアドレス。NULL 値は許可されます。

pages_allocated_count

int

メモリ オブジェクトによって割り当てられているページ数。NULL 値は許可されません。

creation_options

int

内部使用のみ。NULL 値は許可されます。

bytes_used

bigint

内部使用のみ。NULL 値は許可されます。

type

nvarchar(60)

メモリ オブジェクトの種類。

メモリ オブジェクトが属するコンポーネント、またはメモリ オブジェクトの機能を示します。NULL 値は許可されます。

name

varchar(128)

内部使用のみ。NULL 値は許可されます。

memory_node_id

smallint

メモリ オブジェクトが使用しているメモリ ノードの ID。NULL 値は許可されません。

creation_time

datetime

内部使用のみ。NULL 値は許可されます。

page_size_in_bytes

int

メモリ オブジェクトによって割り当てられているページのサイズ。NULL 値は許可されません。

max_pages_allocated_count

int

メモリ オブジェクトによって割り当てられている最大ページ数。NULL 値は許可されません。

page_allocator_address

varbinary(8)

ページ アロケータのメモリ アドレス。NULL 値は許可されません。詳細については、「sys.dm_os_memory_clerks (Transact-SQL)」を参照してください。

creation_stack_address

varbinary(8)

内部使用のみ。NULL 値は許可されます。

sequence_num

int

内部使用のみ。NULL 値は許可されます。

権限

サーバーに対する VIEW SERVER STATE 権限が必要です。

説明

メモリ オブジェクトはヒープであり、割り当ての粒度はメモリ クラークよりも細かくなります。SQL Server コンポーネントでは、メモリ クラークの代わりにメモリ オブジェクトが使用されます。メモリ オブジェクトでは、ページの割り当てにメモリ クラークのページ アロケータ インターフェイスが使用されます。仮想または共有メモリ インターフェイスは使用されません。割り当てパターンに応じて、コンポーネントでは各種メモリ オブジェクトを作成し、任意のサイズの領域を割り当てることができます。

メモリ オブジェクトの通常のページ サイズは 8 KB ですが、増分メモリ オブジェクトのページ サイズは 512 バイトから 8 KB の範囲が可能です。

注意

ページ サイズは最大割り当てではなく、メモリ クラークによって実装されたページ アロケータでサポートされている割り当ての粒度です。メモリ オブジェクトに対して 16 KB 以上の割り当てを要求することもできます。この要求は最終的に、メモリ ノードのマルチページ アロケータに送られます。

次の例では、それぞれのメモリ オブジェクトの種類によって割り当てられたメモリのサイズを返します。

SELECT SUM (pages_allocated_count * page_size_in_bytes) as 'Bytes Used', type 
FROM sys.dm_os_memory_objects
GROUP BY type 
ORDER BY 1 DESC;
GO