相当于windows系统中的任务管理器,功能是通过系统的API实现的本机的监视,代码如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Data;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace Demo
{
/// <summary>
/// 检测内存信息
/// </summary>
public class CheckMemoryInfo
{
[StructLayout(LayoutKind.Sequential)]
public struct MEMORYSTATUSEX
{
public int dwLength;
public int dwMemoryLoad;
public long ullTotalPhys; //内存总数
public long ullAvailPhys; //可用物理内存
public long ullTotalPageFile; //分页数据
public long ullAvailPageFile; //未分页数据
public long ullTotalVirtual; //虚拟内存总数
public long ullAvailVirtual;//可用虚拟内存总数
public long ullAvailExtendedVirtual;//扩展虚拟内存
}

[DllImport("kernel32.dll")]
public static extern void GlobalMemoryStatusEx(ref MEMORYSTATUSEX stat);
/// <summary>
/// 可用物理内存
/// </summary>
/// <returns>long</returns>
public long GetAvailPhys()
{
MEMORYSTATUSEX memInfo = new MEMORYSTATUSEX();
memInfo.dwLength = (int)Marshal.SizeOf(typeof(MEMORYSTATUSEX));
GlobalMemoryStatusEx(ref memInfo);
return memInfo.ullAvailPhys;
}
/// <summary>
/// 内存总数
/// </summary>
/// <returns>long</returns>
public long GetullTotalPhys()
{
MEMORYSTATUSEX memInfo = new MEMORYSTATUSEX();
memInfo.dwLength = (int)Marshal.SizeOf(typeof(MEMORYSTATUSEX));
GlobalMemoryStatusEx(ref memInfo);
return memInfo.ullTotalPhys;
}
/// <summary>
/// 虚拟内存总数
/// </summary>
/// <returns>long</returns>
public long GetTotalVirtual()
{
MEMORYSTATUSEX memInfo = new MEMORYSTATUSEX();
memInfo.dwLength = (int)Marshal.SizeOf(typeof(MEMORYSTATUSEX));
GlobalMemoryStatusEx(ref memInfo);
return memInfo.ullTotalVirtual;
}
/// <summary>
/// 可用虚拟内存总数
/// </summary>
/// <returns>long</returns>
public long GetAvailVirtual()
{
MEMORYSTATUSEX memInfo = new MEMORYSTATUSEX();
memInfo.dwLength = (int)Marshal.SizeOf(typeof(MEMORYSTATUSEX));
GlobalMemoryStatusEx(ref memInfo);
return memInfo.ullAvailVirtual;
}
/// <summary>
/// 获取DataTable占用内存数
/// </summary>
/// <param name="dt">DataTable</param>
/// <returns>long类型,单位字节</returns>
public long GetDataTableMemoryInfo(DataTable dt)
{
if (dt == null)
{
return 0;
}
MemoryStream ms = new MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();

formatter.Serialize(ms, dt);

ms.Position = 0;
return ms.Length;
}
}
}

获取本机内存使用信息、DataTable占用内存空间的更多相关文章

  1. 用C++和shell获取本机CPU、网卡IO、内存、磁盘等的基本信息

    用C++和shell获取本机CPU.网卡.内存.磁盘等的基本信息: 由于对C++相关的函数没多少了解,但是觉得用shell反而相对简单一些: 一.shell脚本,用来辅助C++获取主机的资源使用信息 ...

  2. asp.net中获取本机的相关信息!(CPU、内存、硬盘序列号等)

    // 注意:首先要在项目bin目录中添加引用 System.Management using System;using System.Collections.Generic;using System. ...

  3. C++获取本机IP等信息

    运行环境:VS2008,win7,代码来源于MSDN,相关函数可以查看MSDN中的函数定义.. 代码如下: #include <winsock2.h> #include <ws2tc ...

  4. C++获取本机IP地址信息

    #include<winsock2.h> #include<iostream> #include<string> using namespace std; #pra ...

  5. 【转载】Unity 优雅地管理资源,减少占用内存,优化游戏

    转自:星辰的<Unity3D占用内存太大的解决方法> 最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大. 这里写下关于Unity3D对于内存的管理与优化. Unity3D  ...

  6. Unity3D占用内存太大的解决方法

    原地址:http://www.cnblogs.com/88999660/archive/2013/03/15/2961663.html 最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大 ...

  7. 设置Redis最大占用内存

    https://blog.csdn.net/happyrabbit456/article/details/54945667 Redis需要设置最大占用内存吗?如果Redis内存使用超出了设置的最大值会 ...

  8. (转)Unity3D占用内存太大的解决方法

    自:http://www.cnblogs.com/88999660/archive/2013/03/15/2961663.html 最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大.  ...

  9. iOS图片加载到内存中占用内存情况

    我的测试结果: 图片占用内存   图片尺寸           .png文件大小 1MB              512*512          316KB 4MB              10 ...

随机推荐

  1. tr:even 与tr:odd

    :even匹配所有索引值为偶数的元素,从 0 开始计数查找表格的1.3.5...行(即索引值0.2.4...)<table> <tr><td>Header 1< ...

  2. Jmeter组件8. BeanShell Sampler

    BeanShell是一个小巧免费的JAVA源码解释器,支持对象式的脚本语言特性,亦可嵌入到JAVA源代码中,能动态执行JAVA源代码并为其扩展了脚本语言的一些特性,像JavaScript和perl那样 ...

  3. MySQL的数值类型,时间

    数值类型 整数型 tinyint  smallint  mediumint  int|integer  bigint 注意: 1, 如何选择数据类型,我们的原则是:够用就行!尽量的选择占用内存小的整型 ...

  4. codis安装手册

    本文属原创,转载请注明此信息:http://www.cnblogs.com/robinjava77/p/5465150.html (Robin) codis交流群 240361424  感谢群里各位群 ...

  5. 实时消息平台NSQ的特性

    NSQ是GO语言开发的可用于大规模系统中的实时消息服务,但是和RabbitMQ等相比,它具有什么特色,什么场景下选择NSQ呢? NSQ的自身特色很明显,最主要的优势在如下三个方面: 1,性能.在多个著 ...

  6. redis 主从同步

    修改redis.conf配置文件 vi redis.conf 在编辑模式下 输入  /slaveof 来搜索 将slaveof启用 即 将#删除 依次配置所有 slave 并将进程 kill 掉 重启 ...

  7. Easyui表单之下拉列表的三级联动

    一.实现三级联动需要连接数据库 二.需要JSON数据的解析 三.需要Servlet类与界面相对应值的传递 1. 界面层需要的代码如下: <!DOCTYPE html> <html&g ...

  8. WPF打印、预览、导出PDF

    本人很懒,已找到可使用样例 例:   http://www.cnblogs.com/guogangj/archive/2013/02/27/2934733.html

  9. Java数组的一些基本算法

    数组的一些算法问题:  排序:(升序)   选择排序:     求每一轮的最小值:再输出   冒泡排序:     相邻的两个数相比较,把两个数相比较,第一个大于好面的就交换位置   shell排序: ...

  10. centos 6.5 msyql5.6安装

    MySQL 安装 安装mysql前需要查询系统中含有的有关mysql的软件. rpm -qa | grep -i mysql   如下 代表有mysql ,则先进行卸载 mysql-libs-5.1. ...