进程的工作集是物理 RAM 内存中当前对该进程可见的内存页的集合。这些内存页是常驻内存,可供应用程序使用,而不会触发页面错误。工作集包括共享数据和私有数据。共享数据包括那些包含应用程序执行的所有指令的页(包括 .dll 文件和 system.dll 文件中的页)。随着工作集大小的增加,内存需求也增加。进程具有最小和最大的工作集大小。每次创建进程资源时,系统都会保留等于该进程最小工作集大小的内存量。虚拟内存管理器会尝试在进程处于活动状态时至少保留最小的常驻内存量,但决不会保留超过最大大小的内存量。
通过设置当前进程的MaxWorkingSet值来调整程序的内存占用:
public static void SetWorkingSet(int maxWorkingSet)
{
System.Diagnostics.Process.GetCurrentProcess().MaxWorkingSet
= (IntPtr)maxWorkingSet;
}
定义一个maxWorkingSet值:
int maxWorkingSet = 750000;
在窗体加载和窗体被停用时调用此静态方法:
private void Form1_Load(object sender, EventArgs e)
{
Working.SetWorkingSet(maxWorkingSet);
}
private void Form1_Deactivate(object sender, EventArgs e)
{
Working.SetWorkingSet(maxWorkingSet);
} |