至關於windows系統中的任務管理器,功能是經過系統的API實現的本機的監視,代碼以下windows
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;//擴展虛擬內存
}spa
[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();orm
formatter.Serialize(ms, dt);內存
ms.Position = 0;
return ms.Length;
}
}
}it