Comment puis-je obtenir la RAM disponible ou la mémoire utilisée par l'application?
c#
memory-management
johnnyRose
la source
la source
System.Diagnostics.Process
classe.Réponses:
Vous pouvez utiliser:
Pour obtenir le processus actuel et utiliser:
Pour obtenir l'utilisation de la mémoire privée. Pour plus d'informations, consultez ce lien .
la source
GetCurrentProcess
, mais n'ont besoin d'être actualisées que si vous effectuez d'autres opérations avant d'accéder aux propriétés. Source - Les remarques indiquent que les propriétés sont correctes au moment de la création de l'instantané de processus.Vous souhaiterez peut-être vérifier la méthode GC.GetTotalMemory .
Il récupère le nombre d'octets actuellement censés être alloués par le garbage collector.
la source
System.Environment a WorkingSet - un entier signé 64 bits contenant le nombre d'octets de mémoire physique mappés au contexte de processus.
Si vous voulez beaucoup de détails, il y a System.Diagnostics.PerformanceCounter , mais la configuration demandera un peu plus d'efforts.
la source
Regardez ici pour plus de détails.
Si vous obtenez la valeur 0, il doit appeler
NextValue()
deux fois. Ensuite, il donne la valeur réelle de l'utilisation du processeur. Voir plus de détails ici .la source
En plus de @JesperFyhrKnudsen « s de réponse et @MathiasLykkegaardLorenzen » s commentaire, vous feriez mieux de
dispose
le retournéProcess
après l' avoir utilisé.Ainsi, pour supprimer le
Process
, vous pouvez l'envelopper dans uneusing
portée ou appelerDispose
le processus retourné (proc
variable).using
portée:Ou
Dispose
méthode:Vous pouvez maintenant utiliser la
memory
variable qui est convertie en mégaoctet.la source
^
c'est XOR au niveau du bit, pas de puissance. Alors utilisez simplementproc.PrivateMemorySize64 / (1024*1024)
, ouproc.PrivateMemorySize64 / (1 << 20)
proc.PrivateMemorySize64 / (1024 * 1024)
car la multiplication n'a pas de priorité sur la division.Pour le système complet, vous pouvez ajouter le Microsoft.VisualBasic Framework comme référence;
la source