程序中方法的进程详细信息(CPU时间,已分配的内存)

时间:2011-10-22 21:42:51

标签: c# .net process

我想计算在整个程序中为特定方法分配的 CPU时间和内存。我能够获得完整程序的CPU时间和内存。如何获取特定方法的详细信息。

此外,如何在从磁盘获取值/信息的同时,让磁盘访问从二级存储创建的程序。

我尝试创建线程并使方法由创建的线程运行,但它不起作用。它提供了完整过程的信息。我正在寻找一种特定的方法。

添加更多细节希望这有助于理解问题。

确定。我正在写一个C#代码

public class Program
{
    public static void Main(string[] args)
    {
        **checkPoint_1_start**            
        //
        // Some code here
        //
        **checkPoint_2_start**

        calling_Method();

        **checkPoint_2_end**
        //
        // Some code here
        //

        **checkPoint_1_end**
    }

    public void calling_Method()
    {
        //
        //  Code of this method is very long and contains many variables.
        //  
    }
}

我能够找到checkPoint_1_start用于checkPoint_1_end的内存。我想如何找到仅在checkPoint_2_start checkPoint_2_end之间使用的内存。

我使用以下内容来查找内存使用情况的详细信息,它提供了从checkPoint_1_start到checkPoint_1_end的整个过程。如何在checkPoint_2_start checkPoint_2_end之间使用内存。

私有内存:System.Diagnostics.Process.GetCurrentProcess()。PrivateMemorySize64 / 1024 工作集内存:System.Diagnostics.Process.GetCurrentProcess()。WorkingSet64 / 1024 分配的内存:GC.GetTotalMemory(false)/ 1024

1 个答案:

答案 0 :(得分:0)

在checkPoint_2_start checkPoint_2_end(或您需要的指标的任何其他函数)上使用GC.GetTotalMemory(false)。这两个检查点之间使用的额外内存量是checkPoint_2_end返回的值减去checkPoint_2_start返回的值。

如果你只想要单个线程的内存使用量,我认为你不能这样做。您必须以某种方式跟踪所有分配。

使用Process.TotalProcessorTime作为CPU时间。