c#查看电脑内存
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Management;
using System.Runtime.Serialization.Formatters.Binary; using RemoteDeploy.Core;
using RemoteDeploy.Core.Attributes;
using RemoteDeploy.CommandHelper; using Common.Logging; namespace RemoteDeploy.Commands
{
[Command(Name = "memoryMonitorCommand", Description = "monitoring memory usage")]
public class MemoryMonitorCommand
{
private const string PROPERTY_CAPACITY = "Capacity";
private const string PROPERTY_AVAILABLE_BYTES = "AvailableBytes";
private const string PROPERTY_PROCESS_ID = "ProcessId";
private const string PROPERTY_PROCESS_NAME = "Name";
private const string PROPERTY_WORKING_SET_SIZE = "WorkingSetSize"; private const string QUERY_MEMORY1 = "SELECT * FROM Win32_PhysicalMemory";
private const string QUERY_MEMORY2 = "SELECT * FROM Win32_PerfRawData_PerfOS_Memory";
private const string QUERY_MEMORY3 = "SELECT * FROM Win32_Process"; ILog logger = LogManager.GetLogger(typeof(MemoryMonitorCommand)); [Parameter(Name = "appNames")]
public string AppNames; [Execute]
public void Run()
{
var query1 = new SelectQuery(QUERY_MEMORY1);
var query2 = new SelectQuery(QUERY_MEMORY2);
var query3 = new SelectQuery(QUERY_MEMORY3);
var searcher1 = new ManagementObjectSearcher(query1);
var searcher2 = new ManagementObjectSearcher(query2);
var searcher3 = new ManagementObjectSearcher(query3); var capacity = 0.0;
var free = 0.0;
foreach (var o in searcher1.Get())
capacity += (double)Convert.ToUInt64(o[PROPERTY_CAPACITY]) / (double)( * );
foreach (var o in searcher2.Get())
free += (double)Convert.ToUInt64(o[PROPERTY_AVAILABLE_BYTES]) / (double)( * );
//var appsUsed = new Dictionary<string, double>();
//var apps = AppNames.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
//foreach (var app in apps)
//{
// var appUsed = 0.0;
// foreach (var o in searcher3.Get())
// if (string.Equals(Convert.ToString(o[PROPERTY_PROCESS_NAME]), app, StringComparison.OrdinalIgnoreCase))
// appUsed += (double)Convert.ToUInt64(o[PROPERTY_WORKING_SET_SIZE]) / (double)(1024 * 1024);
// appsUsed.Add(app, appUsed);
//}
var appsUsed = new Dictionary<string, Dictionary<uint, double>>();
var apps = AppNames.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
foreach (var o in searcher3.Get())
{
var appName = Convert.ToString(o[PROPERTY_PROCESS_NAME]);
foreach (var app in apps)
{
if (string.Equals(appName, app, StringComparison.OrdinalIgnoreCase))
{
var appId = Convert.ToUInt32(o[PROPERTY_PROCESS_ID]);
var workingSetSize = (double)Convert.ToUInt64(o[PROPERTY_WORKING_SET_SIZE]) / (double)( * );
if (appsUsed.ContainsKey(appName))
appsUsed[appName].Add(appId, workingSetSize);
else
appsUsed.Add(appName, new Dictionary<uint, double>()
{
{
appId, workingSetSize
}
});
break;
}
}
} var memInfo = new MemoryInfo()
{
Capacity = capacity,
Free = free,
Used = capacity - free,
AppsUsed = appsUsed
}; var bin = new BinaryFormatter();
var ms = new MemoryStream();
bin.Serialize(ms, memInfo);
logger.Info("memory monitor begin execute callback");
CommandContext.Instance.SendMessage("memory usage info", ms.ToArray());
logger.Info("memory monitor end execute callback");
} }
}
c#查看电脑内存的更多相关文章
- 查看电脑内存是ddr3还是ddr4
内存不够用了 要加个内存 但是不想拆机 怎么知道自己电脑是第几代内存呢? 怎么知道频率呢? 1.运行cmd 2.输入wmic回车 3.输入memorychip回车 4.往右拉找到Speed Statu ...
- 如何查看电脑最大支持多少GB内存
第一种方法: 1.打开“开始”菜单,点击“运行”按钮,也可以直接使用[Win + R]组合快捷键打开, 在弹出来的窗口输入“CMD”,然后确定或者按下回车键 2.在命令窗口输入“wmic memphy ...
- cpu-z如何查看电脑配置数据方法介绍
CPU-Z是款经典的内存检测工具,具有5大功能,使用CPU-Z可以查询电脑的处理器.缓存.主板.内存.显卡以及SPD的信息.但是怎么具体看哪一个项目呢?在今天的教程中,小编就跟大家分享一下cpu-z ...
- 【转载】 Windows系统电脑通过设备管理器查看电脑配置信息
在采购电脑或者使用电脑的过程中,有时候我们需要查看到电脑的所有设备硬件信息,此时就可以通过Windows系统自带的设备管理器界面来查看该电脑所有的设备配置信息,包括CPU型号频率.内存.硬盘型号以及容 ...
- 【转载】CentOS下查看电脑硬件设备属性命令
CentOS下查看电脑硬件设备属性命令2018年09月13日 17:48:31 乔烨 阅读数 510如何在linux下查看电脑硬件设备属性 # uname -a # 查看内核/操作系统/CPU信息 # ...
- 【电脑常识】如何查看电脑是32位(X86)还是64位(X64),如何知道硬件是否支持64位系统
开始->运行->输入cmd确定->输入systeminfo 回车 待加载完成,就会看到如下信息(不同版本略有差异): 一.如何查看电脑是32位(X86)还是64位(X64) 方法2: ...
- Android内存管理(5)*官方教程:Logcat内存日志各字段含义,查看当前内存快照,跟踪记录内存分配,用adb查看内存情况时各行列的含义,捕获内存快照的3种方法,如何让程序暴漏内存泄漏的方法
Investigating Your RAM Usage In this document Interpreting Log Messages 内存分析日志中各消息的含 ...
- 用C#来查看电脑硬件和系统信息
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:用C#来查看电脑硬件和系统信息.
- linux查看占用内存/cpu最高的进程情况
linux查看占用cpu最高的进程 ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head 或者top (然后按下M,注意这里是大写) linux查 ...
随机推荐
- C# Java DES加密解密
转自http://www.cnblogs.com/zhuiyi/archive/2013/04/01/2993201.html 最近被DES加解密弄得超级郁闷,我用C#的方法加密得到的密文老是跟客户给 ...
- 使用linq语句获取指定条数的记录
//获得指定个数的子文件夹,用于分页 var pageAlbums = (from SPFolder pf in lstSubAlbums select pf) ...
- 【STL】string 常用函数
string类的构造函数: string(const char *s); //用c字符串s初始化 string(int n,char c); //用n个字符c初始化 此外,string类还支持默认构造 ...
- 在github上搭建博客(使用Jekyll)
简单说,只需要三步,就可以在 Github 搭建起一个博客: 在 Github 上建一个名为 xxx.github.io 的库: 把看中了的 Jekyll 模板 clone 到本地: 把这个模板 pu ...
- 分享一个在PearOS里面的plank的配置文件
plank的配置文件的路径是/home/pear/.config/plank/dock1/settings #This file auto-generated by Plank. #2013-09-0 ...
- 数据库(学习整理)----4--Oracle数据查询(基础点1)
其他: 计算机中的内存是线性的,一维. length('')计算字符的个数,而不是字节的个数 Oracle中的日期类型和数值类型的数据可以做运算符(>,=,<,<>)比较 如果 ...
- Webstorm6的汉化以及主题设置
Webstorm6.0.2界面截图: webstorm作为一款前端开发软件,被业内称为神器,下面是下载地址. 需要的人太多,邮件不过来,传到这边方便大家下载 汉化包 http://www.jetbra ...
- C#程序中:如何向xml文件中写入数据和读取数据
xml文件作为外部信息存储文件使用简单,方便,其结构和表格略有相似,下面简单的说一下xml文件内容的读取 …… using System.Xml;using System.IO;namespace W ...
- 使用PHP对文件进行压缩解压(zip)
使用虚拟主机进行文件上传时最常用的工具莫过于FTP了,但是使用FTP有一个弊端就是文件太多时上传或下载速度比较慢,如果上传时将文件打包,上传后在 空间解压缩,同样下载前将文件打包压缩以压缩包的形式下载 ...
- onethink 换空间报错 解决方案
onethink 换空间的时候有两个配置文件 Application\Common\Conf Application\User\Conf 如果报错先测试数据库 <?php $con = mysq ...