sys.dm_os_memory_objects
返回当前由 SQL Server 分配的内存对象。sys.dm_os_memory_objects 主要用于分析内存使用并标识可能出现的内存泄漏。
列名 | 数据类型 | 说明 |
---|---|---|
memory_object_address |
varbinary(8) |
内存对象的地址。不可为空值。 |
parent_address |
varbinary(8) |
父内存对象的地址。可为空值。 |
pages_allocated_count |
int |
由该对象分配的页数。不可为空值。 |
creation_options |
int |
仅供内部使用。可为空值。 |
bytes_used |
bigint |
仅供内部使用。可为空值。 |
type |
nvarchar(60) |
内存对象的类型。 它指示该内存对象所属的组件,或指示内存对象的函数。可为空值。 |
name |
varchar(128) |
仅供内部使用。可为空值。 |
memory_node_id |
smallint |
该内存对象所用的内存节点的 ID。不可为空值。 |
creation_time |
datetime |
仅供内部使用。NULLABLE。 |
page_size_in_bytes |
int |
由该对象分配的页的大小。不可为空值。 |
max_pages_allocated_count |
int |
由该内存对象分配的最大页数。不可为空值。 |
page_allocator_address |
varbinary(8) |
页分配器的内存地址。不可为空值。有关详细信息,请参阅 sys.dm_os_memory_clerks。 |
creation_stack_address |
varbinary(8) |
仅供内部使用。可为空值。 |
sequence_num |
int |
仅供内部使用。可为空值。 |
权限
需要对服务器具有 VIEW SERVER STATE 权限。
备注
内存对象是指多个堆。它们所提供的分配的粒度比内存 Clerk 所提供的分配的粒度更精细。SQL Server 组件使用内存对象,而不使用内存 Clerk。内存对象使用内存 Clerk 的页分配器接口来分配页。内存对象不使用虚拟内存接口或共享内存接口。根据分配模式的不同,组件可以创建不同的内存对象类型来分配任意大小的区域。
典型的内存对象页大小为 8 KB。但是,增量内存对象的页大小的范围可以从 512 字节到 8 千字节。
注意: |
---|
页大小不是最大分配。相反,页大小是受页分配器支持,并且由内存 Clerk 实现的分配粒度。您可以从内存对象中请求 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
请参阅
参考
动态管理视图和函数
与 SQL Server 操作系统相关的动态管理视图
sys.dm_os_memory_clerks