获取内存使用率
方式1:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
using System;
using System.Runtime.InteropServices;
namespace ConsoleApp1
{
public class Class1
{
static void Main(string[] args)
{
Console.WriteLine("总内存:" + FormatSize(GetTotalPhys()));
Console.WriteLine("已使用:" + FormatSize(GetUsedPhys()));
Console.WriteLine("可使用:" + FormatSize(GetAvailPhys()));
Console.ReadKey();
}
#region 获得内存信息API
[DllImport("kernel32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool GlobalMemoryStatusEx(ref MEMORY_INFO mi);
//定义内存的信息结构
[StructLayout(LayoutKind.Sequential)]
public struct MEMORY_INFO
{
public uint dwLength; //当前结构体大小
public uint dwMemoryLoad; //当前内存使用率
public ulong ullTotalPhys; //总计物理内存大小
public ulong ullAvailPhys; //可用物理内存大小
public ulong ullTotalPageFile; //总计交换文件大小
public ulong ullAvailPageFile; //总计交换文件大小
public ulong ullTotalVirtual; //总计虚拟内存大小
public ulong ullAvailVirtual; //可用虚拟内存大小
public ulong ullAvailExtendedVirtual; //保留 这个值始终为0
}
#endregion
#region 格式化容量大小
///
/// 格式化容量大小
///
/// 容量(B)
/// 已格式化的容量
private static string FormatSize(double size)
{
double d = (double)size;
int i = 0;
while ((d > 1024) && (i < 5))
{
d /= 1024;
i++;
}
string[] unit = { "B", "KB", "MB", "GB", "TB" };
return (string.Format("{0} {1}", Math.Round(d, 2), unit[i]));
}
#endregion
#region 获得当前内存使用情况
///
/// 获得当前内存使用情况
///
///
public static MEMORY_INFO GetMemoryStatus()
{
MEMORY_INFO mi = new MEMORY_INFO();
mi.dwLength = (uint)System.Runtime.InteropServices.Marshal.SizeOf(mi);
GlobalMemoryStatusEx(ref mi);
return mi;
}
#endregion
#region 获得当前可用物理内存大小
///
/// 获得当前可用物理内存大小
///
/// 当前可用物理内存(B)
public static ulong GetAvailPhys()
{
MEMORY_INFO mi = GetMemoryStatus();
return mi.ullAvailPhys;
}
#endregion
#region 获得当前已使用的内存大小
///
/// 获得当前已使用的内存大小
///
/// 已使用的内存大小(B)
public static ulong GetUsedPhys()
{
MEMORY_INFO mi = GetMemoryStatus();
return (mi.ullTotalPhys - mi.ullAvailPhys);
}
#endregion
#region 获得当前总计物理内存大小
///
/// 获得当前总计物理内存大小
///
/// 80)
{
System.Threading.Thread.Sleep(1000 * 60);
}
}
}
}
}
View Code
相关链接 :
C#获取电脑型号、系统版本、内存大小、硬盘大小、CPU信息
关于c# 中读取系统内存大小的问题
C#获取特定进程CPU和内存使用率
C#获取CPU占用率、内存占用、磁盘占用、进程信息
C# 准确获取系统 CPU 使用率
如何用C#实时获取CPU利用率
C#中利用WMI对象获取物理内存和可用内存大小信息
C#获取系统内存大小
|