This Domain(Admin5.com) is for Sale:

深入SQLServer 2000的内存管理机制(三)

时间:2007-12-23  来源:不详  作者:迈克DB

内存分配器

在SERVER中一个内存的消费者初始化一个内存分配器,首先是产生一个内存对象来治理这些请求.当这个对象来分配这些请求,他在SERVER的内存治理器中,从Bpool (缓冲池区)或MemToLeave (内存释放区)来履行这些请求.假如这些请求小于8K,这些请求通常在Bpool (缓冲池区) 分配.假如请求需要8K或以上的内存空间, 这些请求通常在MemToLeave (内存释放区)分配.因为一个单独的内存对象可以用来执行多次内存分配.所以有可能一次内存分配正好在8K以下(包括治理对象的消费)的请求被分配在MemToLeave (内存释放区). 在SQL Server的处理空间中,内存消费者通常是内部的.换句话说,这些内存消费者和对象是SQL Server自己的规范需要消耗内存来执行任务,但也不一定都这样.也存在一些外部的消费者,就像我前面锁说的.通常,这些外部的内存消费者调用正常的Win32 API内存函数来分配和治理内存,并且从MemToLeave (内存释放区)分配内存空间,非常明显这是SQL Server程序中唯一有效的区域. 可是XPROCS有非凡的异常处理,当一个xproc调用Open Data Services(ODS) srv_alloc API函数,这完全和其他的内存消费者一样. 一般而言srv_alloc API函数从Bpool (缓冲池区)申请小于8K的内存,对于大的内存从MemToLeave (内存释放区)分配.

dedecms.com


dedecms.com

看完这篇,您有何感觉呢?

文章评论

共有位Admini5网友发表了评论 查看完整内容

24小时热门信息