使用Process获取的信息如下:已经除以1024
NonpagedSystemMemorySize64=52.015625
PagedMemorySize64=50764
PagedSystemMemorySize64=784.6328125
PeakPagedMemorySize64=51084
PeakVirtualMemorySize64=38650184
PeakWorkingSet64=66804
PrivateMemorySize64=50764
VirtualMemorySize64=38645832
WorkingSet64=66484NonpagedSystemMemorySize64=52.015625
PagedMemorySize64=50764
PagedSystemMemorySize64=784.6328125
PeakPagedMemorySize64=51084
PeakVirtualMemorySize64=38650184
PeakWorkingSet64=66804
PrivateMemorySize64=50764
VirtualMemorySize64=38645832
WorkingSet64=66484NonpagedSystemMemorySize64=52.015625
PagedMemorySize64=50764
PagedSystemMemorySize64=784.6328125
PeakPagedMemorySize64=51084
PeakVirtualMemorySize64=38650184
PeakWorkingSet64=66804
PrivateMemorySize64=50764
VirtualMemorySize64=38645832
WorkingSet64=66484
使用PrivateMemorySize64获取的结果明显偏大,其余的属性获取的数值也不合适?这是为什么?

解决方案 »

  1.   


            /// <summary>
            /// 获取指定进程占用内存
            /// </summary>
            /// <param name="Name">进程名称</param>
            /// <returns></returns>
            public static int GetMemory(string Name)
            {
                int memory = 0;
                Process[] myPS = System.Diagnostics.Process.GetProcessesByName(Name);
                if (myPS.Length > 0)
                {
                   Process input = myPS[0];
                   memory = (int)(input.WorkingSet64 >> 10);
                }
               
                return memory;
            }
    和这个结果对一下呢
      

  2.   

    在windows任务管理器里面查看详细信息,可以看到“工作集(内存)”里面的内容和WorkingSet64的取值是一致的,但是“内存(专用工作集)”就是找不到合适的对应关系,Process里面和内存相关的属性 我都取出来了