When you start Microsoft SQL Server, SQL Server memory usage may continue to steadily increase and not decrease, even when activity on the server is low. Additionally, the Task Manager and the Performance Monitor may show that the physical memory that is available on the computer steadily decreases until the available memory is between 4 MB and 10 MB.
This behavior alone does not indicate a memory leak. This behavior is typical and is an intended behavior of the SQL Server buffer pool.
By default, SQL Server dynamically grows and shrinks the size of its buffer pool (cache), depending on the physical memory load that the operating system reports. As long as sufficient memory (between 4 MB and 10 MB) is available to prevent paging, the SQL Server buffer pool will continue to grow. As other processes on the same computer as SQL Server allocate memory, the SQL Server buffer manager will release memory as needed. SQL Server can free and obtain several megabytes of memory each second. This allows for SQL Server to quickly adjust to memory allocation changes.
You can establish upper and lower limits for how much memory (buffer pool) is used by the SQL Server database engine with the min server memory
and max server memory
configuration options. Before you set the min server memory
and max server memory
options, review the references in the section titled "Memory" in the following Microsoft Knowledge Base article:
How to determine proper SQL Server configuration settings
Notice that the max server memory
option only limits the size of the SQL Server buffer pool. The max server memory
option does not limit a remaining unreserved memory area that SQL Server leaves for allocations of other components such as extended stored procedures, COM objects, non-shared DLLs, EXEs, and MAPI components. Because of the previous allocations, it is typical for the SQL Server private bytes to exceed the max server memory
For more information about allocations from this unreserved memory area, click the following article number to view the article in the Microsoft Knowledge Base:
There may not be enough virtual memory when you have a large number of databases in SQL Server
Refer to SQL Server Books Online and topics such as "Effects of min and max server memory," "Memory Architecture," "Server Memory Options," and "SQL Server Memory Pool."
For more information about the min server memory
configuration option and the max server memory
configuration option in SQL Server 2005, see the "Effects of min and max server memory" topic in SQL Server 2005 Books Online.