Как узнать количество доступной/всей оперативной памяти

Собственно, нужно узнать, сколько в устройстве RAM памяти всего и доступно.


Ответы (1 шт):

Автор решения: MSDN.WhiteKnight

В Windows так:

using System;
using System.Runtime.InteropServices;

class Program
{    
    private 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;
    }
            
    [DllImport("kernel32.dll")]
    static extern int GlobalMemoryStatusEx([In, Out] ref MEMORYSTATUSEX lpBuffer);

    //...

    MEMORYSTATUSEX ms = new MEMORYSTATUSEX();
    ms.dwLength = (uint)Marshal.SizeOf(ms);

    if (GlobalMemoryStatusEx(ref ms) != 0)
    {
        uint available_ram = ms.ullAvailPhys;
        uint total_ram = ms.ullTotalPhys;
    }

    //...

}
→ Ссылка