2012-12-25 14 views
21

Eventuali duplicati:
How to get memory available or used in C#Come ottenere la quantità di memoria utilizzata da un'applicazione

voglio visualizzare la memoria che viene utilizzato da mia applicazione nella barra di stato della mia richiesta . Sto cercando una perdita di memoria - ma non so dove. Ora, la mia idea è di visualizzare la memoria utilizzata nella barra di stato in modo che possa vederlo mentre sto lavorando con l'applicazione e trovare la parte, dove si verifica il problema e quindi posso profilare questo.

Qualcuno può darmi un aiuto, come posso ottenere la memoria utilizzata.

risposta

22

È possibile utilizzare la seguente funzione (Il vero parametro indica il GC per eseguire una raccolta prima):

long memory = GC.GetTotalMemory(true); 
+0

Come menzionato nel duplicato, attenzione: questa soluzione esamina solo l'heap gestito. Per ottenere l'intera dimensione del processo, vedere: https://stackoverflow.com/a/750595/331281 – Dejan

-1

Perché non solo monitorare l'utilizzo della memoria con il TaskManager o con strumenti più avanzati da Sysinternals e solo dopo aver determinato quale flusso di lavoro aumenta l'utilizzo della memoria in modo anomalo, quindi profili l'applicazione con CLR Profiler o altri.

8

Si può provare GC.GetTotalMemory:

recupera il numero di byte attualmente pensato per essere assegnato. Un parametro indica se questo metodo può attendere un breve intervallo> prima di ritornare, per consentire al sistema di raccogliere gli oggetti garbage e finalize>.


o

using System.Diagnostics; 

Process currentProc = Process.GetCurrentProcess(); 

Una volta ottenuto un riferimento al processo in corso, è possibile determinare il suo utilizzo di memoria leggendo la proprietà PrivateMemorySize64.

long memoryUsed = currentProc.PrivateMemorySize64; 
+1

sono gli stessi? – mcmillab

2

Se si desidera monitorare la memoria utilizzata dall'applicazione, non è necessario scrivere codice per questo. Basta usare i contatori delle prestazioni da Windows (http://www.codeproject.com/Articles/8590/An-Introduction-To-Performance-Counters). Forniranno le informazioni di cui hai bisogno con i grafici! Esistono molti contatori di memoria (http://msdn.microsoft.com/en-us/library/x2tyfybc.aspx), uno di essi avrà i dati necessari e immagino che ti aiuterà a scoprire quando la tua app inizierà a utilizzare più memoria di quanto dovrebbe.

Tuttavia, se è necessario inserire queste informazioni nell'applicazione, è comunque possibile utilizzare i contatori delle prestazioni. .NET ha classi nello spazio dei nomi System.Diagnostics per accedere ai propri dati. Vedi questo esempio: http://www.geekpedia.com/tutorial211_Using-Performance-Counters-in-Csharp.html

Problemi correlati