C#获取当前系统内存剩余百分比

本文介绍了一种使用C#在Windows环境下通过API GlobalMemoryStatus获取系统内存信息的方法,包括总内存、可用物理内存等,并提供了代码示例。注意,由于32位和64位系统下参数长度不同,需正确定义结构体。
static class Program

{

    [StructLayout(LayoutKind.Sequential)]
    public struct MemoryInfo
    {
        public uint Length;
        public uint MemoryLoad;
        public ulong TotalPhysical;//总内存
        public ulong AvailablePhysical;//可用物理内存
        public ulong TotalPageFile;
        public ulong AvailablePageFile;
        public ulong TotalVirtual;
        public ulong AvailableVirtual;
    }

    [DllImport("kernel32")]
    public static extern void GlobalMemoryStatus(ref MemoryInfo meminfo);

    static void Main()
        {
            MemoryInfo MemInfo = new MemoryInfo();
            GlobalMemoryStatus(ref MemInfo);

            double totalMb = MemInfo.TotalPhysical / 1024 / 1024;
            double avaliableMb = MemInfo.AvailablePhysical / 1024 / 1024;

            Console.WriteLine($"物理内存共有:{totalMb}MB");
            Console.WriteLine($"可使用的物理内存:{avaliableMb}MB");
            Console.WriteLine($"剩余内存百分比:{Math.Round((avaliableMb / totalMb) * 100, 2)}");

        }

}

API GlobalMemoryStatus获取内存信息,但该方法参数长度在32位和64位系统下不同,如定义错误拿不到正确值,区别如下:

//32位
public struct MemoryInfo
    {
        public uint Length;
        public uint MemoryLoad;
        public ulong TotalPhysical;//总内存
        public ulong AvailablePhysical;//可用物理内存
        public ulong TotalPageFile;
        public ulong AvailablePageFile;
        public ulong TotalVirtual;
        public ulong AvailableVirtual;
    }

//64位
public struct MemoryInfo
    {
        public uint Length;
        public uint MemoryLoad;
        public uint TotalPhysical;//总内存
        public uint AvailablePhysical;//可用物理内存
        public uint TotalPageFile;
        public uint AvailablePageFile;
        public uint TotalVirtual;
        public uint AvailableVirtual;
    }

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值