相当于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. Android常用控件及对应Robotium API

    最近发现Android控件不熟悉,看Robotium的API都费劲. 常用Android控件: 控件类型 描述 相关类 Button 按钮,可以被用户按下或点击,以执行⼀个动作 Button Text ...

  2. 转@OneToMany或@ManyToOne的用法-annotation关系映射篇(上)

    原文:http://blog.sina.com.cn/s/blog_6fef491d0100obdm.html 例如我们用一个例子来开启JPA的一对多和多对一的学习. 比如你去当当网上买书籍,当当网就 ...

  3. mongoDB在windows下安装与配置方案

    首先在官网下载mongoDB的安装包: https://www.mongodb.org/downloads 百度云盘下载:http://pan.baidu.com/s/1slUSGYp (安装版 wi ...

  4. 官方提供的屏蔽百度转码Baidu Transcoder的方法no-transform

    首先,百度在官方的声明中说:[喝小酒的网摘]http://blog.hehehehehe.cn/a/17112.htm百度仅作为中立的转码工具及相关技术的提供方.在转码过程中,百度对第三方网站内容不做 ...

  5. tomcat虚拟目录映射网络共享目录

    <Host name="localhost" debug="0" appBase="webapps" unpackWARs=" ...

  6. 初学Python之os模块

    OS模块是一个系统操作模块,是对本机的一些操作 os.name   显示操作系统,window:nt ,Linux/Unix:posix. os.getcwd()  显示运行的工作路径 os.list ...

  7. apache日志轮询技术

    1.首先先下载安装apache的日志轮询工具cronolog: wget http://cronolog.org/download/cronolog-1.6.2.tar.gz .tar.gz cd c ...

  8. 线程+IO流

    第十八天知识点总结 线程的停止: 1.停止一个线程,一般是通过一个变量来控制. 2.如果需要停止一个处于一个等待状态的线程,那么需要配合interrupt方法来完成 守护线程(后台线程):在一个进程中 ...

  9. C# iis错误配置信息( 500.21 - Internal Server Error )

    新电脑安装完开发环境后,还需要注册framework4.0到IIS.不然会报错: HTTP 错误 500.21 - Internal Server Error 处理程序"Extensionl ...

  10. localstorage sessionstorage cookie 备忘

    /* sessionStorage: 保存的数据用于浏览器的一次会话,当会话结束(通常是该窗口关闭),数据被清空: localStorage: 保存的数据长期存在,下一次访问该网站的时候,网页可以直接 ...