系统内存使用情况可以使用性能计数器得到,下面是一个例子,性能计数器的更多内容可以在 计算机管理/系统工具/性能日志和警报/计数器日志/中查到。 static void Main(string[] args) { System.Diagnostics.PerformanceCounter pc = new System.Diagnostics.PerformanceCounter(); //pc.CategoryName = "Processor"; //这三行是取Cpu占用率的 //pc.CounterName = "% Processor Time"; //pc.InstanceName = "_Total"; pc.CategoryName = "Memory"; //这两行区可用内存数 pc.CounterName = "Available KBytes"; long l = 0; for (; ; ) { Console.WriteLine(pc.NextValue()); Thread.Sleep(100); } }
获取内存using System.Runtime.InteropServices;
[DllImport("kernel32")] public static extern void GlobalMemoryStatus(ref MEMORY_INFO meminfo);
//定义内存的信息结构 [StructLayout(LayoutKind.Sequential)] public struct MEMORY_INFO { public uint dwLength; public uint dwMemoryLoad; public uint dwTotalPhys; public uint dwAvailPhys; public uint dwTotalPageFile; public uint dwAvailPageFile; public uint dwTotalVirtual; public uint dwAvailVirtual; }
{ System.Diagnostics.PerformanceCounter pc = new System.Diagnostics.PerformanceCounter();
//pc.CategoryName = "Processor"; //这三行是取Cpu占用率的
//pc.CounterName = "% Processor Time";
//pc.InstanceName = "_Total";
pc.CategoryName = "Memory"; //这两行区可用内存数
pc.CounterName = "Available KBytes";
long l = 0;
for (; ; )
{
Console.WriteLine(pc.NextValue());
Thread.Sleep(100);
}
}
[DllImport("kernel32")]
public static extern void GlobalMemoryStatus(ref MEMORY_INFO meminfo);
//定义内存的信息结构
[StructLayout(LayoutKind.Sequential)]
public struct MEMORY_INFO
{
public uint dwLength;
public uint dwMemoryLoad;
public uint dwTotalPhys;
public uint dwAvailPhys;
public uint dwTotalPageFile;
public uint dwAvailPageFile;
public uint dwTotalVirtual;
public uint dwAvailVirtual;
}
//调用GlobalMemoryStatus函数获取内存的相关信息
MEMORY_INFO MemInfo;
MemInfo = new MEMORY_INFO();
GlobalMemoryStatus(ref MemInfo);
MemoryLoad.Text = MemInfo.dwMemoryLoad.ToString()+"%的内存正在使用";
TotalPhys.Text = "物理内存共有"+MemInfo.dwTotalPhys.ToString()+"字节";
AvailPhys.Text = "可使用的物理内存有"+MemInfo.dwAvailPhys.ToString()+"字节";
TotalPageFile.Text = "交换文件总大小为"+MemInfo.dwTotalPageFile.ToString()+"字节";
AvailPageFile.Text = "尚可交换文件大小为"+MemInfo.dwAvailPageFile.ToString()+"字节";
TotalVirtual.Text = "总虚拟内存有"+MemInfo.dwTotalVirtual.ToString()+"字节";
AvailVirtual.Text = "未用虚拟内存有"+MemInfo.dwAvailVirtual.ToString()+"字节";
//System.Environment.TickCount返回系统启动后经过的毫秒数
int start = System.Environment.TickCount;
//耗时操作
//...
int timeTicks = System.Environment.TickCount - start;