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

Использование памяти в С#

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

4b9b3361

Ответ 1

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

// 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

Ответ 2

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

Ответ 3

Я с Уиллом и Стивом, не делай этого, если только ты ДЕЙСТВИТЕЛЬНО должен это сделать., что сказал.,.

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

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

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

Ответ 4

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