web-dev-qa-db-fra.com

Comment obtenir la taille de la mémoire système disponible?

Est-il possible d'obtenir la taille de la mémoire disponible du système en C # .NET? si oui comment?

44
Louis Rhys

Utilisation Microsoft.VisualBasic.Devices.ComputerInfo.TotalPhysicalMemory .

Cliquez avec le bouton droit sur votre projet, Ajouter une référence, sélectionnez Microsoft.VisualBasic.

56
Hans Passant

Cette réponse est basée sur celle de Hans Passant. La propriété requise est AvailablePhysicalMemory en fait. et il (et TotalPhysicalMemory et autres) sont des variables d'instance, il devrait donc être

new ComputerInfo().AvailablePhysicalMemory

Cela fonctionne en C #, mais je me demande pourquoi cette page dit que pour C #, "Ce langage n'est pas pris en charge ou aucun exemple de code n'est disponible."

26
Louis Rhys

De EggHeadCafe après googler pour 'mémoire système c #'

Vous devrez ajouter une référence à 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();
        }
    }
}

Sortie:

Espace total = 4033036

Mémoire physique totale = 2095172

Mémoire virtuelle totale = 1933904

Mémoire virtuelle disponible = 116280

19
TheEvilPenguin
var performance = new System.Diagnostics.PerformanceCounter("Memory", "Available MBytes");
var memory = performance.NextValue();
8
vikingfabian

L'utilisation des compteurs de performances accessibles via System.Diagnostics sera une option.

Reportez-vous http://www.dotnetspider.com/resources/4612-Find-Memory-usage-CPU-usage.aspx

J'espère que cela t'aides!

4
Jagmag