我有一个.NET多线程应用程序。有没有办法在运行时显示线程消耗的资源信息,比如CPU、Mememory e.t.c?例如,如果我运行一个占用大量内存的运行繁重数学操作的线程,我想知道该特定线程消耗了多大的内存。
发布于 2016-04-19 21:48:39
这将为您提供整个进程的内存使用情况:
// get the current process
Process currentProcess = System.Diagnostics.Process.GetCurrentProcess();
// get the physical mem usage
long totalBytesOfMemoryUsed = currentProcess.WorkingSet64;对于每个线程的测量,我建议您跟踪使用的对象的数量(尽管这不是一项微不足道的任务)。
发布于 2016-04-19 21:49:39
线程的一个核心概念是它共享自己拥有的进程资源。线程没有自己的资源所有权概念。
如果您希望从外部查看进程(以及包含的线程),可以使用许多工具。
如果你想跟踪动态分配的使用情况,首先要确保你确实需要这样做(.net对内存的管理非常好)。但是,如果需要的话,您需要查看System.Diagnostics名称空间;尤其是PerformanceCounters。但请记住,主动监控会改变性能特征。
https://stackoverflow.com/questions/36719455
复制相似问题