如何获得windows中特定进程使用的物理内存和cpu

How to get physical memory and cpu used by particular process in windows?

本文关键字:物理内存 cpu 进程 windows 何获得      更新时间:2023-10-16

嗨,这是我的代码,打印一些以字节显示的进程所使用的物理内存,当我通过谷歌转换器将字节转换为kb时。任务管理器中显示的内存使用值小于我的代码给出的输出。我还想知道同一进程使用的Cpu ?我在堆栈溢出,CPU使用率上发现了这个问题,它提供了了解CPU使用率的指导,但我想知道一些特定进程id的CPU使用率,而不是我代码中提到的当前进程,我可以用提供的代码实现相同的目标吗?

请指教。

int main( void )
{
    HANDLE hProcess;
    PROCESS_MEMORY_COUNTERS pmc;
    DWORD processID = 4696;

    // Print information about the memory usage of the process.
    hProcess = OpenProcess(  PROCESS_QUERY_INFORMATION |
                                    PROCESS_VM_READ,
                                    FALSE, processID );
    if (NULL == hProcess)
        return 1;
    if ( GetProcessMemoryInfo( hProcess, &pmc, sizeof(pmc)) )
    {
        printf( "tWorkingSetSize: %un", pmc.WorkingSetSize );
    }
    CloseHandle( hProcess );
    return 0;
}

CPU

从链接的答案中,你想使用你的'hProcess'句柄而不是示例中的'self'句柄。

把这个:

self = GetCurrentProcess();
GetProcessTimes(self, &ftime, &ftime, &fsys, &fuser);
...

这:

GetProcessTimes(hProcess, &ftime, &ftime, &fsys, &fuser);
...
内存

工作集由Private(堆,堆栈等)+ Shared(通常是dll/exe代码页)组成。您引用的是任务管理器中的哪个特定列(以及哪个操作系统)?