Jak mogę uzyskać dostępną pamięć RAM lub pamięć używaną przez aplikację?
c#
memory-management
johnnyRose
źródło
źródło
System.Diagnostics.Process
klasę.Odpowiedzi:
Możesz użyć:
Aby uzyskać bieżący proces i użyć:
Aby uzyskać prywatne wykorzystanie pamięci. Więcej informacji znajdziesz pod tym linkiem .
źródło
GetCurrentProcess
, ale muszą zostać odświeżone tylko wtedy, gdy wykonujesz inne operacje przed uzyskaniem dostępu do właściwości. Źródło - uwagi mówią, że właściwości są poprawne w momencie tworzenia migawki procesu.Możesz chcieć sprawdzić metodę GC.GetTotalMemory .
Pobiera liczbę bajtów, które są obecnie uważane za przydzielone przez moduł odśmiecania pamięci.
źródło
System.Environment ma WorkingSet - 64-bitową liczbę całkowitą ze znakiem zawierającą liczbę bajtów pamięci fizycznej odwzorowanej na kontekst procesu.
Jeśli chcesz uzyskać dużo szczegółów, możesz skorzystać z opcji System.Diagnostics.PerformanceCounter , ale konfiguracja będzie wymagała nieco więcej wysiłku.
źródło
Zajrzyj tutaj po szczegóły.
Jeśli otrzymasz wartość równą 0, musisz zadzwonić
NextValue()
dwa razy. Następnie podaje rzeczywistą wartość użycia procesora. Zobacz więcej szczegółów tutaj .źródło
Oprócz @JesperFyhrKnudsen „s odpowiedź i @MathiasLykkegaardLorenzen ” komentarzu s, lepiej
dispose
zwróconyProcess
po użyciu go.Tak więc, aby pozbyć się
Process
, możesz umieścić go wusing
zakresie lub wywołaćDispose
zwrócony proces (proc
zmienną).using
zakres:Lub
Dispose
metoda:Teraz możesz użyć
memory
zmiennej, która jest konwertowana na megabajt.źródło
^
jest bitowe XOR, a nie potęga. Więc po prostu użyjproc.PrivateMemorySize64 / (1024*1024)
lubproc.PrivateMemorySize64 / (1 << 20)
proc.PrivateMemorySize64 / (1024 * 1024)
ponieważ mnożenie nie ma pierwszeństwa przed dzieleniem.Aby uzyskać kompletny system, możesz dodać Microsoft.VisualBasic Framework jako odniesienie;
źródło