zoukankan      html  css  js  c++  java
  • 获取本机内存使用信息、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;
    }
    }
    }

  • 相关阅读:
    ue4 官网IK流程记录
    ue4-C++中加载一个蓝图类(二)-C++中绑定Blueprint武器
    UE4 c++ 创建刚体Cube
    UE4的AI学习(1)——基本概念
    UE4的AI学习(2)——官方案例实例分析
    行为树(Behavior Tree)实践(1)– 基本概念
    Animation Blueprint, Set Custom Variables Via C++
    ue4 c++ anim notify
    ue4 动画相关方法杂记
    [UE4]Montage动画设置Slot
  • 原文地址:https://www.cnblogs.com/yshj/p/3755344.html
Copyright © 2011-2022 走看看