Как узнать размер доступной системной памяти? - PullRequest
43 голосов
/ 21 июля 2010

Можно ли получить размер доступной системной памяти в C # .NET?если да как?

Ответы [ 5 ]

55 голосов
/ 21 июля 2010

Использование Microsoft.VisualBasic.Devices.ComputerInfo.TotalPhysicalMemory.

Щелкните правой кнопкой мыши свой проект, добавьте ссылку, выберите Microsoft.VisualBasic.

25 голосов
/ 21 июля 2010

Этот ответ основан на ответах Ганса Пассанта. Обязательным свойством на самом деле является AvailablePhysicalMemory. и он (и TotalPhysicalMemory и другие) являются переменными экземпляра, поэтому он должен быть

new ComputerInfo().AvailablePhysicalMemory

Это работает в C #, но мне интересно, почему эта страница говорит, что для C # "Этот язык не поддерживается или нет примера кода."

19 голосов
/ 21 июля 2010

С EggHeadCafe после поиска в системе 'c # системной памяти'

Вам потребуется добавить ссылку на System.Management

using System;
using System.Management;

namespace MemInfo
{
    class Program
    {       
        static void Main(string[] args)
        {
            ObjectQuery winQuery = new ObjectQuery("SELECT * FROM Win32_LogicalMemoryConfiguration");

            ManagementObjectSearcher searcher = new ManagementObjectSearcher(winQuery);

            foreach (ManagementObject item in searcher.Get())
            {
                Console.WriteLine("Total Space = " + item["TotalPageFileSpace"]);
                Console.WriteLine("Total Physical Memory = " + item["TotalPhysicalMemory"]);
                Console.WriteLine("Total Virtual Memory = " + item["TotalVirtualMemory"]);
                Console.WriteLine("Available Virtual Memory = " + item["AvailableVirtualMemory"]);
            }
            Console.Read();
        }
    }
}

Вывод:

Общее пространство = 4033036

Общее количество физической памяти = 2095172

Общее количество виртуальной памяти = 1933904

Доступная виртуальная память = 116280

8 голосов
/ 27 октября 2017
var performance = new System.Diagnostics.PerformanceCounter("Memory", "Available MBytes");
var memory = performance.NextValue();
4 голосов
/ 21 июля 2010

Использование счетчиков производительности, доступных через System.Diagnostics, будет одним из вариантов.

См. http://www.dotnetspider.com/resources/4612-Find-Memory-usage-CPU-usage.aspx

Надеюсь, это поможет!

...