Todas as respostas aqui, incluindo a aceita, fornecerão a quantidade total de RAM disponível para uso. E pode ter sido isso que a OP queria.
Mas se você estiver interessado em obter a quantidade de RAM instalada , convém fazer uma chamada para a função GetPhysicallyInstalledSystemMemory .
A partir do link, na seção Comentários:
A função GetPhysicallyInstalledSystemMemory recupera a quantidade de RAM fisicamente instalada das tabelas de firmware SMBIOS do computador. Isso pode ser diferente da quantidade relatada pela função GlobalMemoryStatusEx , que define o membro ullTotalPhys da estrutura MEMORYSTATUSEX para a quantidade de memória física que está disponível para uso do sistema operacional. A quantidade de memória disponível para o sistema operacional pode ser menor que a quantidade de memória fisicamente instalada no computador porque o BIOS e alguns drivers podem reservar memória como regiões de E / S para dispositivos mapeados na memória, tornando a memória indisponível para o sistema operacional e aplicativos.
Código de amostra:
[DllImport("kernel32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetPhysicallyInstalledSystemMemory(out long TotalMemoryInKilobytes);
static void Main()
{
long memKb;
GetPhysicallyInstalledSystemMemory(out memKb);
Console.WriteLine((memKb / 1024 / 1024) + " GB of RAM installed.");
}