/// <summary>
/// 获取内存信息
/// </summary>
/// <param name="meminfo"></param>
[DllImport("kernel32")]
public static extern void GlobalMemoryStatus(ref MEMORY_INFO meminfo);
[DllImport("kernel32")]
public static extern bool GlobalMemoryStatusEx(ref MEMORYSTATUSEX stat);
两个都可以
[StructLayout(LayoutKind.Sequential)]
public struct MEMORY_INFO
{
public uint dwLength;
public uint dwMemoryLoad;
public UInt64 dwTotalPhys; //总的物理内存大小
public UInt64 dwAvailPhys; //可用的物理内存大小
public UInt64 dwTotalPageFile;
public UInt64 dwAvailPageFile; //可用的页面文件大小
public UInt64 dwTotalVirtual; //返回调用进程的用户模式部分的全部可用虚拟地址空间
public UInt64 dwAvailVirtual; // 返回调用进程的用户模式部分的实际自由可用的虚拟地址空间
}
[StructLayout(LayoutKind.Sequential)]
public struct MEMORYSTATUSEX
{
public uint dwLength;
public uint dwMemoryLoad;
public ulong ullTotalPhys;
public ulong ullAvailPhys;
public ulong ullTotalPageFile;
public ulong ullAvailPageFile;
public ulong ullTotalVirtual;
public ulong ullAvailVirtual;
public ulong ullAvailExtendedVirtual;
}
注意看这里 MEMORY_INFO MemInfo;
MemInfo = new MEMORY_INFO();
MEMORYSTATUSEX memEx = new MEMORYSTATUSEX();
memEx.dwLength = (uint)Marshal.SizeOf(typeof(MEMORYSTATUSEX));
GlobalMemoryStatusEx(ref memEx);
GlobalMemoryStatus(ref MemInfo);