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_in_bytes |
bigint |
メモリ オブジェクトのインスタンスによって割り当てられるメモリの量 (バイト単位)。 NULL 値は許可されません。 |
creation_options |
int |
内部使用のみ。 NULL 値は許可されます。 |
bytes_used |
bigint |
内部使用のみ。 NULL 値は許可されます。 |
型 |
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_in_bytes |
bigint |
メモリ オブジェクトによって使用されるメモリの最大量。 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 の範囲が可能です。
注 |
---|
ページ サイズは最大割り当てではなく、 メモリ クラークによって実装されたページ アロケーターでサポートされている割り当ての粒度です。 メモリ オブジェクトから、8 KB を超える割り当てを要求することができます。 |
互換性サポート
SQL Server 2012 では、以下の列の名前が変更されました。
以前の列名 |
新しい列名 |
---|---|
pages_allocated_count |
pages_in_bytes |
max_pages_allocated_count |
max_pages_in_bytes |
使用例
次の例では、それぞれのメモリ オブジェクトの種類によって割り当てられたメモリのサイズを返します。
SELECT SUM (pages_in_bytes) as 'Bytes Used', type
FROM sys.dm_os_memory_objects
GROUP BY type
ORDER BY 'Bytes Used' DESC;
GO