获取本机内存使用信息、DataTable占用内存空间
相当于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占用内存空间的更多相关文章
- 用C++和shell获取本机CPU、网卡IO、内存、磁盘等的基本信息
用C++和shell获取本机CPU.网卡.内存.磁盘等的基本信息: 由于对C++相关的函数没多少了解,但是觉得用shell反而相对简单一些: 一.shell脚本,用来辅助C++获取主机的资源使用信息 ...
- asp.net中获取本机的相关信息!(CPU、内存、硬盘序列号等)
// 注意:首先要在项目bin目录中添加引用 System.Management using System;using System.Collections.Generic;using System. ...
- C++获取本机IP等信息
运行环境:VS2008,win7,代码来源于MSDN,相关函数可以查看MSDN中的函数定义.. 代码如下: #include <winsock2.h> #include <ws2tc ...
- C++获取本机IP地址信息
#include<winsock2.h> #include<iostream> #include<string> using namespace std; #pra ...
- 【转载】Unity 优雅地管理资源,减少占用内存,优化游戏
转自:星辰的<Unity3D占用内存太大的解决方法> 最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大. 这里写下关于Unity3D对于内存的管理与优化. Unity3D ...
- Unity3D占用内存太大的解决方法
原地址:http://www.cnblogs.com/88999660/archive/2013/03/15/2961663.html 最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大 ...
- 设置Redis最大占用内存
https://blog.csdn.net/happyrabbit456/article/details/54945667 Redis需要设置最大占用内存吗?如果Redis内存使用超出了设置的最大值会 ...
- (转)Unity3D占用内存太大的解决方法
自:http://www.cnblogs.com/88999660/archive/2013/03/15/2961663.html 最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大. ...
- iOS图片加载到内存中占用内存情况
我的测试结果: 图片占用内存 图片尺寸 .png文件大小 1MB 512*512 316KB 4MB 10 ...
随机推荐
- tr:even 与tr:odd
:even匹配所有索引值为偶数的元素,从 0 开始计数查找表格的1.3.5...行(即索引值0.2.4...)<table> <tr><td>Header 1< ...
- Jmeter组件8. BeanShell Sampler
BeanShell是一个小巧免费的JAVA源码解释器,支持对象式的脚本语言特性,亦可嵌入到JAVA源代码中,能动态执行JAVA源代码并为其扩展了脚本语言的一些特性,像JavaScript和perl那样 ...
- MySQL的数值类型,时间
数值类型 整数型 tinyint smallint mediumint int|integer bigint 注意: 1, 如何选择数据类型,我们的原则是:够用就行!尽量的选择占用内存小的整型 ...
- codis安装手册
本文属原创,转载请注明此信息:http://www.cnblogs.com/robinjava77/p/5465150.html (Robin) codis交流群 240361424 感谢群里各位群 ...
- 实时消息平台NSQ的特性
NSQ是GO语言开发的可用于大规模系统中的实时消息服务,但是和RabbitMQ等相比,它具有什么特色,什么场景下选择NSQ呢? NSQ的自身特色很明显,最主要的优势在如下三个方面: 1,性能.在多个著 ...
- redis 主从同步
修改redis.conf配置文件 vi redis.conf 在编辑模式下 输入 /slaveof 来搜索 将slaveof启用 即 将#删除 依次配置所有 slave 并将进程 kill 掉 重启 ...
- Easyui表单之下拉列表的三级联动
一.实现三级联动需要连接数据库 二.需要JSON数据的解析 三.需要Servlet类与界面相对应值的传递 1. 界面层需要的代码如下: <!DOCTYPE html> <html&g ...
- WPF打印、预览、导出PDF
本人很懒,已找到可使用样例 例: http://www.cnblogs.com/guogangj/archive/2013/02/27/2934733.html
- Java数组的一些基本算法
数组的一些算法问题: 排序:(升序) 选择排序: 求每一轮的最小值:再输出 冒泡排序: 相邻的两个数相比较,把两个数相比较,第一个大于好面的就交换位置 shell排序: ...
- centos 6.5 msyql5.6安装
MySQL 安装 安装mysql前需要查询系统中含有的有关mysql的软件. rpm -qa | grep -i mysql 如下 代表有mysql ,则先进行卸载 mysql-libs-5.1. ...