59

是否可以在 C#.NET 中获取系统可用内存的大小?如果是的话怎么办?

4

6 回答 6

66

使用Microsoft.VisualBasic.Devices.ComputerInfo.TotalPhysicalMemory.

右键单击您的项目,添加引用,选择Microsoft.VisualBasic.

于 2010-07-21T04:18:11.533 回答
28

这个答案是基于 Hans Passant 的。所需的属性实际上是 AvailablePhysicalMemory。它(以及 TotalPhysicalMemory 和其他)是实例变量,所以它应该是

new ComputerInfo().AvailablePhysicalMemory

它在 C# 中工作,但我想知道为什么这个页面对 C# 说“不支持这种语言或没有可用的代码示例”。

于 2010-07-21T05:50:45.617 回答
20

在谷歌搜索“c#系统内存”后来自EggHeadCafe

您需要添加对 System.Management 的引用

using System;
using System.Management;

namespace MemInfo
{
    class Program
    {       
        static void Main(string[] args)
        {
            ObjectQuery winQuery = new ObjectQuery("SELECT * FROM Win32_LogicalMemoryConfiguration");

            ManagementObjectSearcher searcher = new ManagementObjectSearcher(winQuery);

            foreach (ManagementObject item in searcher.Get())
            {
                Console.WriteLine("Total Space = " + item["TotalPageFileSpace"]);
                Console.WriteLine("Total Physical Memory = " + item["TotalPhysicalMemory"]);
                Console.WriteLine("Total Virtual Memory = " + item["TotalVirtualMemory"]);
                Console.WriteLine("Available Virtual Memory = " + item["AvailableVirtualMemory"]);
            }
            Console.Read();
        }
    }
}

输出:

总空间 = 4033036

总物理内存 = 2095172

总虚拟内存 = 1933904

可用虚拟内存 = 116280

于 2010-07-21T04:04:04.307 回答
12
var performance = new System.Diagnostics.PerformanceCounter("Memory", "Available MBytes");
var memory = performance.NextValue();
于 2017-10-27T06:04:42.057 回答
2

使用通过 System.Diagnostics 访问的性能计数器将是一种选择。

参考http://www.dotnetspider.com/resources/4612-Find-Memory-usage-CPU-usage.aspx

希望这可以帮助!

于 2010-07-21T04:05:07.113 回答
0

一段代码:

 System.Diagnostics.PerformanceCounter ramCounter;     
 ramCounter = new System.Diagnostics.PerformanceCounter("Memory", "Available Bytes"); //"Available MBytes" for MB
 string getAvailableRAMInBytes = ramCounter.NextValue() + "byte";
于 2021-06-25T09:44:49.810 回答