Использование памяти в C # - PullRequest
18 голосов
/ 16 апреля 2009

У меня есть программа, которая использует потоки в C #. Есть ли способ программно узнать использование памяти приложением? Я хочу ограничить порождение потоков, скажем, 10 мегабайт памяти, как мне это сделать?

Ответы [ 4 ]

24 голосов
/ 16 апреля 2009

Если вам нужна память всего запущенного процесса, а не для каждого потока, как насчет:

// get the current process
Process currentProcess = System.Diagnostics.Process.GetCurrentProcess();

// get the physical mem usage
long totalBytesOfMemoryUsed = currentProcess.WorkingSet64;

Существует целый ряд других свойств памяти процесса, кроме WorkingSet64, проверьте "связанные с памятью" по следующей ссылке для того, который лучше всего подходит

http://msdn.microsoft.com/en-us/library/system.diagnostics.process_properties.aspx

4 голосов
/ 16 апреля 2009

Хотя я согласен с комментариями, которые вы уже получили по вашему вопросу, использование System.Environment.WorkingSet может быть реальным ответом на него, если вы действительно решите пойти по этому пути?

1 голос
/ 16 апреля 2009

Вы не измеряете количество потоков в использовании памяти. Скорее, примите во внимание количество «процессоров» (SMP / Multi-Cores / Hyper-Threading), чтобы решить, сколько потоков должно работать параллельно. Или используйте ThreadPool , размер которого определяется автоматически для достижения хорошего соотношения потоков и процессоров.

1 голос
/ 16 апреля 2009

Я с Уиллом и Стивом, не делай этого, если только ты НАСТОЯЩИМ не должен это делать. , , что сказал. , .

если вам действительно нужно это сделать, вы можете использовать .Net API-интерфейсы хостинга они есть, поэтому такие приложения, как SQL Server, могут размещать .net framework внутри приложения.

Это дает вам контроль над управлением памятью и т. Д., Я читал статью, но никогда не использовал API, они в моем списке дел на одну ночь, когда мне скучно, и ни один из моих других "забавных" проектов чувствую, как весело на этой неделе:)

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...