2009-09-03 4 views
1

Мое приложение (DotNET) работает как плагин внутри автономного приложения C++, которое предоставляет C++/CLI SDK.Использование памяти приложения DotNET

Очень легко для моих пользователей создавать большие объемы данных, и я хотел бы предложить вариант прерывания, если потребление памяти моего подключаемого модуля + базового приложения достигает -say-90% от допустимого максимума ,

Как измерить общее потребление памяти (в идеале для неуправляемого кода и) и как узнать, сколько окон памяти для текущего приложения?

ответ

4

Класс Process предоставляет большую часть этой информации. Я думаю, что вы будете после этого Process.PrivateMemorySize64.

Вы должны быть в состоянии сделать:

var memoryUsage = Process.GetCurrentProcess().PrivateMemorySize64; 
+0

Да! Это оно! Я уже беспокоился, что мне пришлось пройти через Пинвоке, чтобы добраться до этого. –

+1

Класс Process имеет много хороших показателей, таких как это - взгляните на документы, и вы увидите многие из них. –

1

Я рекомендую профилирующий инструмент: dotTrace работает очень хорошо.

+0

Что мне нужно - это способ для моего приложения узнать, сколько памяти он использует во время работы. Я не ищу приложение для профилирования. По сути, я хочу, чтобы количество частных байтов, используемых моим процессом, было видимым в Process Explorer/Task Manager. –

+0

А, я неправильно понял ваш вопрос. Сожалею! – Alan

1

GetProcessMemoryInfo и проверить PrivateUsage в PROCESS_MEMORY_COUNTERS_EX.

Update

Очевидно, что я misred вопрос и если вы хотите, чтобы значение со стороны CLI SDK приложения. В управляемой стороне вы уже получили правильный ответ.

+0

Спасибо в любом случае. Очень признателен. –

Смежные вопросы