我们希望在运行时使用外部程序和应用程序本身进行检查。如果一个线程可以告诉他的内存和cpu使用情况会很棒。
答案 0 :(得分:1)
以下是示例: 你有threadA和ThreadB。 ThreadA创建一个对象X. ThreadB使用此对象。 那么你想在线程的信息中看到什么?谁创建了对象或谁在使用它? 您唯一能看到的是使用线程AFAIK的CPU时间 而且我所知道的唯一一个在流程上显示MAX信息的程序是Process Explorer。 http://technet.microsoft.com/en-us/sysinternals/bb896653
答案 1 :(得分:0)
您可以使用性能监视器来查看为进程分配了多少内存,但是对于其中的单个线程,您看不到相同的内容。
但是,您可以创建自定义performance counters以在代码中显示要监控的任何值。
答案 2 :(得分:0)
SysInternals Process Explorer有此功能,请检查this Server fault thread。
CodeProject上有一个开源项目,截图看起来很有希望:How to get CPU usage of processes and threads,但是演示项目似乎在Win7上崩溃(可能缺少一些权限)。
[编辑] 如果您想自己编写,可以P / Invoke Thread32First和Thread32Next函数枚举单个进程中的线程,然后使用{ {3}}查询每个线程的CPU时间。
答案 3 :(得分:-1)
对象在线程之间共享,线程不拥有对象。
对象的内存分配在堆上,该堆位于应用程序的范围内。任何线程都可以在应用程序的生命周期内随时访问任何内存。
无法确定哪个线程正在使用任何内存块或正在使用任何内存块。
线程执行工作单元。除非您知道哪个线程将运行哪个工作单元,否则您将无法获得CPU使用率的可靠指标。如果您确实知道哪个线程将执行哪些任务,则SysInternals的Process Explorer具有此指标。