Como posso obter a RAM ou memória disponível usada pelo aplicativo?
c#
memory-management
johnnyRose
fonte
fonte
System.Diagnostics.Process
classe.Respostas:
Você pode usar:
Para obter o processo atual e usar:
Para obter o uso de memória privada. Para mais informações, consulte este link .
fonte
GetCurrentProcess
, mas só precisam ser atualizados se você estiver executando outras operações antes de acessar as propriedades. Origem - Comentários dizem que as propriedades estão corretas no momento em que o instantâneo do processo é criado.Convém verificar o método GC.GetTotalMemory .
Ele recupera o número de bytes atualmente considerados alocados pelo coletor de lixo.
fonte
System.Environment possui WorkingSet - um número inteiro assinado de 64 bits que contém o número de bytes de memória física mapeada para o contexto do processo.
Se você deseja muitos detalhes, há System.Diagnostics.PerformanceCounter , mas será um pouco mais difícil de configurar.
fonte
Veja aqui detalhes.
Se você obtiver o valor 0, precisará chamar
NextValue()
duas vezes. Em seguida, fornece o valor real do uso da CPU. Veja mais detalhes aqui .fonte
Além @JesperFyhrKnudsen 'resposta s e @MathiasLykkegaardLorenzen ' comentário s, é melhor
dispose
o retornouProcess
após usá-lo.Portanto, para descartar o
Process
, você pode agrupá-lo em umusing
escopo ou chamarDispose
o processo retornado (proc
variável).using
escopo:Ou
Dispose
método:Agora você pode usar a
memory
variável que é convertida em Megabyte.fonte
^
é bit XOR, não energia. Então, basta usarproc.PrivateMemorySize64 / (1024*1024)
, ouproc.PrivateMemorySize64 / (1 << 20)
proc.PrivateMemorySize64 / (1024 * 1024)
porque a multiplicação não tem prioridade sobre a divisão.Para o sistema completo, você pode adicionar o Microsoft.VisualBasic Framework como referência;
fonte