Подтвердить что ты не робот

Как получить объем памяти, используемый приложением

Возможный дубликат:
Как получить доступную память или использовать ее на С#

Я хочу визуализировать память, которая используется моим приложением в строке состояния моего приложения. Я ищу память, но я не знаю, где. Теперь моя идея - визуализировать используемую память в строке состояния, чтобы я мог ее видеть, пока я работаю с приложением и нахожу часть, где возникает проблема, и затем я могу профилировать это.

Может кто-нибудь дать мне некоторую помощь, как я могу получить использованную память.

4b9b3361

Ответ 1

Вы можете использовать следующую функцию (истинный параметр сообщает GC для выполнения первой коллекции):

long memory = GC.GetTotalMemory(true);

Ответ 2

Вы можете попробовать GC.GetTotalMemory:

Он извлекает количество байтов, которые в настоящее время считаются выделенными. Параметр указывает, может ли этот метод подождать короткий интервал > перед возвратом, чтобы система могла собирать мусор и завершать > объекты.


или

using System.Diagnostics;

Process currentProc = Process.GetCurrentProcess();

Как только у вас есть ссылка на текущий процесс, вы можете определить его использование памяти, прочитав свойство PrivateMemorySize64.

long memoryUsed = currentProc.PrivateMemorySize64;

Ответ 3

Если вы хотите отслеживать память, используемую вашим приложением, вам не нужно писать код для этого. Просто используйте счетчики производительности из Windows (http://www.codeproject.com/Articles/8590/An-Introduction-To-Performance-Counters). Они предоставят необходимую вам информацию с помощью диаграмм! Есть много счетчиков памяти (http://msdn.microsoft.com/en-us/library/x2tyfybc.aspx), один из них будет иметь необходимые данные, и я думаю, это поможет вам узнать, когда ваш приложение начинает использовать больше памяти, чем должно.

Однако, если вам нужно поместить эту информацию в ваше приложение, вы все равно можете использовать счетчики производительности. .NET имеет классы в пространстве имен System.Diagnostics для доступа к своим данным. Посмотрите этот пример: https://weblog.west-wind.com/posts/2014/Sep/27/Capturing-Performance-Counter-Data-for-a-Process-by-Process-Id

Ответ 4

Почему бы просто не следить за использованием памяти с помощью TaskManager или с более продвинутыми инструментами из Sysinternals и только после того, как вы определите, какой рабочий процесс повышает использование памяти аномально, а затем профилировать приложение с помощью CLR Profiler или других.