测量子进程的CPU和RAM使用情况

我有以下过程:

public void Run()
        {

            ProcessStartInfo serverPInfo = new ProcessStartInfo("javaw", "-jar -Xms1024M -Xmx1024M "C:UsersDavidDocumentsVisual Studio 2012ProjectsConsoleApplication8Debugcraftbukkit.jar" -o true -nojline");
            serverPInfo.RedirectStandardInput = true;
            serverPInfo.RedirectStandardOutput = true;
            serverPInfo.RedirectStandardError = true;
            serverPInfo.UseShellExecute = false;


            serverP = new Process();
            serverP.StartInfo = serverPInfo;

            serverP.OutputDataReceived += new DataReceivedEventHandler(ServerOutputDataReceived);
            serverP.ErrorDataReceived += new DataReceivedEventHandler(ServerErrorDataReceived);
            serverP.Start();


            serverP.BeginOutputReadLine();
            serverP.BeginErrorReadLine();
            serverP.WaitForExit();
        }

我如何测量进程的CPU和内存使用情况?

我尝试了serverP.WorkingSet64serverP.PrivateMemorySize64serverP.PagedMemorySize64 ,但它们都返回了常量值。 它们都不会改变(如任务管理器中的RAM使用量度表)。

我不知道如何获得当前的CPU使用率。

我在网上看了一下,但我发现的大多数东西是PerformanceMonitor 。 我不想使用它,因为可能会有更多的“javaw”进程实例,我只想测量我在上面的代码中创建的子进程的CPU和RAM使用情况。

任何帮助,将不胜感激。


您可以使用PerformanceCounter来只测量一个子进程活动。 但是您需要使用其进程ID而不是进程名称。 计数器的RawValue等于ProcessId ,当您创建它时。

这里是描述这种技术的答案。


没有“当前的CPU使用率”这样的事情。 它只能在一段时间内测量,例如持续1秒。 您可以使用TotalProcessorTime属性,每秒测量一次并减去以前的值。 这会给你在最后一次测量期间使用CPU多少时间。
为了测量RAM使用情况,我使用了WorkingSet64和PrivateMemorySize64 - 这对我来说很好。

链接地址: http://www.djcxy.com/p/79823.html

上一篇: Measure CPU and RAM Usage of Child Process

下一篇: who is running kernel if cpu is running processes?