如题,通过系统性能监视器Available Bytes 可以获得系统可用物理内存总字节数,已经使用的物理内存是通过哪个指标获取呢,感觉其它的都是些虚拟内存啊、页面交换啊等等的指标,到底如何算出总的物理内存大小或者已经使用的物理内存大小呢?求解

解决方案 »

  1.   

    //使用WMI
    ManagementScope ms = new ManagementScope();
    ms.Connect();
    ObjectQuery oq = new ObjectQuery();
    oq.QueryString = "SELECT * FROM Win32_PhysicalMemory";
    ManagementObjectSearcher sercher = new ManagementObjectSearcher(ms, oq);
    ManagementObjectCollection memMoc = sercher.Get();
    long capacityTemp = 0;
    foreach (ManagementObject mo in memMoc)
    {
        //内存总量等于所有插槽上内存容量之和
        capacityTemp += Convert.ToInt64(mo["Capacity"].ToString());
    }
    string GetTotalPhysicalMemory()
    {
       try
       {
        
        string st="";
        ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
        ManagementObjectCollection moc = mc.GetInstances();
        foreach(ManagementObject mo in moc)
        {
         
         st=mo["TotalPhysicalMemory"].ToString();
         
        }
        moc=null;
        mc=null;
        return st;
       }
       catch
       {
        return "unknow";
       }
       finally
       {
       }
    }