繁体   English   中英

C#中的内存使用情况

[英]Memory usage in 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 ,它自动调整大小以实现良好的线程到CPU比率。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM