Hur man får mängden minne som används av en applikation

Hur man får mängden minne som används av en applikation

Du kan använda följande funktion (True-parametern talar om för GC att utföra en insamling först):

long memory = GC.GetTotalMemory(true);

Du kan prova GC.GetTotalMemory :

Den hämtar antalet byte som för närvarande anses vara allokerad. En parameter indikerar om denna metod kan vänta ett kort intervall> innan den återvänder, för att systemet ska kunna samla in skräp och slutföra> objekt.

eller

using System.Diagnostics;

Process currentProc = Process.GetCurrentProcess();

När du har en referens till den aktuella processen kan du bestämma dess minnesanvändning genom att läsa egenskapen PrivateMemorySize64.

long memoryUsed = currentProc.PrivateMemorySize64;

Om du vill övervaka minnet som används av din applikation behöver du inte skriva kod för det. Använd bara prestandaräknare från Windows (http://www.codeproject.com/Articles/8590/An-Introduction-To-Performance-Counters). De kommer att tillhandahålla den information du behöver med diagram! Det finns massor av minnesräknare (http://msdn.microsoft.com/en-us/library/x2tyfybc.aspx), en av dem kommer att ha den data du behöver och jag antar att den kommer att hjälpa dig att ta reda på när din app börjar använda mer minne än den borde.

Men om du behöver lägga in denna information i din applikation kan du fortfarande använda prestandaräknare. .NET har klasser i System.Diagnostics namnområde för att komma åt deras data. Se det här exemplet:https://weblog.west-wind.com/posts/2014/Sep/27/Capturing-Performance-Counter-Data-for-a-Process-by-Process-Id