У меня есть программа, которая использует потоки в С#. Есть ли способ программно использовать использование памяти в приложении? Я хочу ограничить порождение потоков, чтобы сказать 10 мегабайт памяти, как бы я это сделал?
Использование памяти в С#
Ответ 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, который автоматически настраивается для достижения хорошего соотношения потоков к процессору.