专业网站建设品牌,18年专业建站经验,服务6000+客户--广州松河
免费热线:400-963-0016
微信咨询
|
联系我们
扫二维码关注公众号
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
位置:
广州松河
>
技术支持
> C#获得总物理内存和可用物理内存大小几个函数
C#获得总物理内存和可用物理内存大小几个函数
来源:网络整理 时间:2023/2/14 0:48:37 共
3710
浏览
说明
网上关于C#获取总物理内存大小和当前可用物理内存大小的方法有很多,但是多是从国外某网站抄过来,不仅没有测评和验证,甚至连代码排版都是乱七八糟。就C#内存操作的方法,本文对这些进行了一些测试,并从中选择了比较好的一种实现方式进行了实现和代码重写,并对实现后的源代码后进行了测试。
实现原理
基于 System.Memanement.ManagementClass 实现。这个类是对硬件信息WMI的具体封装,具体相关内容可以参见 Windows Management Instrumentation。
函数说明
long GetTotalPhysicalMemory()
用于获得当前总物理内存大小,单位是字节。如果获取失败,返回 -1。
long GetAvailablePhysicalMemory()
用于获得当前可用物理内存大小,单位是字节。如果获取失败,返回 -1。
double ToFileFormat(long filesize, [FileSizeUnit unit])
根据指定的文件大小和单位,对输入的文件大小(字节表示)进行转换。单位是可选参数,默认值为FileSizeUnit.MB。
使用方法
把函数的源代码复制至实际的项目;
在引用中添加系统自带的 System.Memanement 类库;
在函数定义的类文件顶部添加 using System.Memagement。
示例
static void Main()
{
long total = GetTotalPhysicalMemory();
long free = GetAvailablePhysicalMemory();
long used = total - free;
Console.WriteLine("Total memory: {0} bytes, {1} GB.", total, ToFileFormat(total, FileSizeUnit.GB).ToString("0.00"));
Console.WriteLine("Used memory: {0} bytes, {1} MB.", used, ToFileFormat(used).ToString("0.00"));
Console.WriteLine("Free memory: {0} bytes, {1} KB.", free, ToFileFormat(free, FileSizeUnit.KB).ToString("0.00"));
}
输出结果
Total memory: 8589934592 bytes, 8.00 GB.
Used memory: 5817077760 bytes, 5547.60 MB.
Free memory: 2772856832 bytes, 2707868.00 KB.
附:实现源代码
/// <summary>
/// 获得已使用的物理内存的大小,单位 (Byte),如果获取失败,返回 -1.
/// </summary>
/// <returns></returns>
public static long GetTotalPhysicalMemory()
{
long capacity = 0;
try
{
foreach (ManagementObject mo1 in new ManagementClass("Win32_PhysicalMemory").GetInstances())
capacity += long.Parse(mo1.Properties["Capacity"].Value.ToString());
}
catch (Exception ex)
{
capacity = -1;
Console.WriteLine(ex.Message);
}
return capacity;
}
/// <summary>
/// 获得已使用的物理内存的大小,单位 (Byte),如果获取失败,返回 -1.
/// </summary>
/// <returns></returns>
public static long GetAvailablePhysicalMemory()
{
long capacity = 0;
try
{
foreach (ManagementObject mo1 in new ManagementClass("Win32_PerfFormattedData_PerfOS_Memory").GetInstances())
capacity += long.Parse(mo1.Properties["AvailableBytes"].Value.ToString());
}
catch (Exception ex)
{
capacity = -1;
Console.WriteLine(ex.Message);
}
return capacity;
}
/// <summary>
/// 根据指定的文件大小单位,对输入的文件大小(字节表示)进行转换。
/// </summary>
/// <param name="filesize">文件文件大小,单位为字节。</param>
/// <param name="targetUnit">目标单位。</param>
/// <returns></returns>
public static double ToFileFormat(long filesize, FileSizeUnit targetUnit = FileSizeUnit.MB)
{
double size = -1;
switch (targetUnit)
{
case FileSizeUnit.KB: size = filesize / 1024.0; break;
case FileSizeUnit.MB: size = filesize / 1024.0 / 1024; break;
case FileSizeUnit.GB: size = filesize / 1024.0 / 1024 / 1024; break;
case FileSizeUnit.TB: size = filesize / 1024.0 / 1024 / 1024 / 1024; break;
case FileSizeUnit.PB: size = filesize / 1024.0 / 1024 / 1024 / 1024 / 1024; break;
default: size = filesize; break;
}
return size;
}
}
文件单位大小的枚举型。
/// <summary>
/// 文件大小单位,包括从B至PB共六个单位。
/// </summary>
public enum FileSizeUnit
{
B,
KB,
MB,
GB,
TB,
PB
}
版权说明:
本网站凡注明“广州松河 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
相关主题:
柠檬网站是哪个公司的软件
福州网站优化公司排名前十
重庆象征科技有限公司网站
泰安网站建设定制公司电话
做网站建设科技公司哪家好
淄博房产网站建设公司
枣庄婚庆公司官方网站
做网站的公司怎么运营的
世界航空公司低价买票网站
宁夏公租房网站设计公司
·上一条:
苹果手机safari中input的button按钮颜色显示以及默认样式问题
|
·下一条:
C#中的Process类使用
同类资讯
Java工程师的如何才能成为高级工程师_数据库
如何批量制作工业25码2_数据库
MySQL查询语句空格,web前端怎么入门学习_数据库
mysql数据库如何实现某一属性自增_数据库
数据库改码后出现乱码_数据库
过段时间后会自己恢复到大约一小时前的状态_数据库
mysql和云服务器的区别_数据库
MySQL中怎么在表建好的情况下_数据库
有没有过来人指点一二_数据库
MySQL和Access的区别_数据库
mysql数据历史数定时迁移和归档_数据库
mysql 树级查询,如何学习数据分析_数据库
mysql中 子查询,mysql查看a表有哪些数据_数据库
mysql子查询堵塞,Java工程师要求三年工作经验_数据库
哪些行业将有所作为_数据库
如何启动MySQL服务_数据库
mysql不查询索引,mysql表主键索引作用原因_数据库
mysql怎么查询存在,mysql怎么查询结果输出到文件_数据库
mysql 查询 总数,在MYSQL中的4rowsinset_数据库
查询信息 mysql,mysql查询每个人每个月数据的平均值_数据库
资讯动态
公司新闻
互联网资讯
电商资讯
优化推广
技术支持
关于我们
公司简介
企业文化
服务项目
公司新闻
服务项目
网站建设
网站推广
品牌策划
移动应用
服务支持
在线咨询
服务流程
产品报价
售后服务
联系我们
代理加盟
付款方式
在线留言
联系方式
联系方式
电话:400-963-0016
邮箱:sales@itwy.com
QQ:250211130
微信:18520775521
Copyright © 广州松河信息科技有限公司 2005-2026 版权所有
粤ICP备16019765号
广州松河信息科技有限公司 版权所有
18520775521
QQ洽谈
sales@itwy.com