
自底向上:Memory Node → Memory Clerk / Buffer Pool → Memory Object。
DBCC MEMORYSTATUS 可查看分配統計:
按分配單位大小分類:
MemToLeave 預留計算 (32 位元啟動時):((CPU核心數 - 4) + 256) * 0.5MB + 256MB,通常約 384MB。
負責將分配出的記憶體按用途分類 (CACHESTORE_OBJCP, CACHESTORE_SQLCP, OBJECTSTORE_LOCK_MANAGER 等)。查詢分類統計:
SELECT type, SUM(pages_kb)/1024.0 AS Memory_MB
FROM sys.dm_os_memory_clerks
GROUP BY type
ORDER BY Memory_MB DESC;

注意:Memory Clerk 僅管理非 Buffer Pool 記憶體,Buffer Pool 獨立管理。
32 位元進程 VAS = 4GB (2GB User / 2GB Kernel)。Buffer Pool 向 VAS 保留位址空間,實際提交物理記憶體隨需求增長。
sp_configure 'max server memory' 設定上限;min server memory 非啟動即佔用,而是超過後不再釋放。DBCC MEMORYSTATUS 區塊顯示 Buffer Pool 詳細資訊:
SELECT (bpool_committed * 8192) / 1024.0 / 1024.0 AS BufferPool_MB
FROM sys.dm_os_sys_info;

Buffer Pool 佔用
+ 從 Buffer Pool 借用的頁面
+ MultiPage Allocator (MemToLeave) 非 Buffer Pool 部分


本質為堆,由 Page Allocator 分配。sys.dm_os_memory_objects 可查看,page_allocator_address 對應 Memory Clerk,表明隸屬關係。