【发布时间】:2011-03-18 19:04:44
【问题描述】:
是否可以在 C#.NET 中获取系统可用内存的大小?如果是怎么办?
【问题讨论】:
标签: c# .net memory diagnostics
是否可以在 C#.NET 中获取系统可用内存的大小?如果是怎么办?
【问题讨论】:
标签: c# .net memory diagnostics
使用Microsoft.VisualBasic.Devices.ComputerInfo.TotalPhysicalMemory。
右键单击您的项目,添加引用,选择Microsoft.VisualBasic。
【讨论】:
new Microsoft.VisualBasic.Devices.ComputerInfo().TotalPhysicalMemory
这个答案是基于 Hans Passant 的。所需的属性实际上是 AvailablePhysicalMemory。它(以及 TotalPhysicalMemory 和其他)是实例变量,所以它应该是
new ComputerInfo().AvailablePhysicalMemory
它在 C# 中工作,但我想知道为什么 this page 说对于 C#,“不支持这种语言或没有可用的代码示例。”
【讨论】:
My 命名空间的一部分!不是 C#——包含这个 Visual Basic dll 将暴露这些在 VB.NET 中非常棒的快捷方式;在 VB 之后进入 C# 的人开始怀念这一点。不错的答案+1
来自EggHeadCafe 在谷歌搜索“c# 系统内存”后
您需要添加对 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
【讨论】:
var performance = new System.Diagnostics.PerformanceCounter("Memory", "Available MBytes");
var memory = performance.NextValue();
【讨论】:
使用可通过 System.Diagnostics 访问的性能计数器是一种选择。
参考http://www.dotnetspider.com/resources/4612-Find-Memory-usage-CPU-usage.aspx
希望这会有所帮助!
【讨论】:
一段代码:
System.Diagnostics.PerformanceCounter ramCounter;
ramCounter = new System.Diagnostics.PerformanceCounter("Memory", "Available Bytes"); //"Available MBytes" for MB
string getAvailableRAMInBytes = ramCounter.NextValue() + "byte";
【讨论】: