C#中的内存使用情况

我有一个在C#中使用线程的程序。 有没有办法以编程方式了解应用程序的内存使用情况? 我想限制线程的产生说10兆字节的内存,我该怎么做?

如果你想要整个运行进程的内存而不是每个线程,那么如何:

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

虽然我同意你已经收到的关于你的问题的评论,但如果你真的决定采取这种行动,那么使用System.Environment.WorkingSet可能是一个真正的答案吗?

我和Will和Steve在一起,除非你真的必须这样做,否则不要这样做。 。 。 那说。 。 。

如果你真的需要这样做,你可以使用他们所在的.Net Hosting API ,这样像SQL Server这样的应用程序可以在应用程序中托管.net框架。

它让你可以控制内存管理等,我读过这篇文章却从未使用过API,当我感到无聊的时候,他们就在我的待办事项清单上,而我的其他“有趣”项目都没有那一周:)

希望这可以帮助。

您不测量内存使用中的线程数。 相反,请考虑“处理器”(SMP /多核/超线程)的数量来决定并行运行多少个线程。 或者使用ThreadPool ,它自动resize以实现良好的线程到CPU比率。