获取软件进程的内存信息
得到句柄 hdestPr 后,我们就可以调用前面提到的 GetProcessTimes() API 来得到进程具体的进程占用的 CPU 时间了。而进程占用的内存,我们也可以通过 GetProcessMemoryInfo() API 来获取:
BOOL WINAPI GetProcessMemoryInfo( HANDLE Process, // 进程句柄 PPROCESS_MEMORY_COUNTERS ppsmemCounters, // 内存信息结构 DWORD cb // 内存信息结构的大小 ); |
typedef struct _PROCESS_MEMORY_COUNTERS { DWORD cb; DWORD PageFaultCount; // 分页错误数目 SIZE_T PeakWorkingSetSize; // 工作集列 ( 物理内存 ) 的最大值 SIZE_T WorkingSetSize; // 工作集列 ( 物理内存 ) 的大小 SIZE_T QuotaPeakPagedPoolUsage; // 分页池的峰值的最大值 SIZE_T QuotaPagedPoolUsage; // 分页池的峰值大小 SIZE_T QuotaPeakNonPagedPoolUsage; // 非分页池的峰值的最大值 SIZE_T QuotaNonPagedPoolUsage; // 非分页池的峰值大小 SIZE_T PagefileUsage; // 页文件页的大小(虚拟内存) SIZE_T PeakPagefileUsage; // 页文件页的最大值 } |
其中 WorkingSetSize 和 PagefileUsage 分别指的就是进程占用的物理内存和虚拟内存。
在得到进程句柄后,我们将定义好的内存信息结构变量传入 GetProcessMemoryInfo(),就可以得到对应的内存信息了:
PROCESS_MEMORY_COUNTERS pmc; pmc.cb = sizeof(PROCESS_MEMORY_COUNTERS); GetProcessMemoryInfo(hsoffice, &pmc, sizeof(pmc)); physicalMem = pmc.WorkingSetSize; virtualMem = pmc.PagefileUsage; |
除了可以通过 GetProcessTimes 和 GetProcessMemoryInfo API 来获取进程的 CPU 时间和占用内存的情况外,我们还可以通过类似的办法调用 GetProcessIoCounters,GetThreadTimes 等 API 获得更进一步的 IO,线程等信息。
相关阅读:
使用 Rational Functional Tester 进行应用软件系统级自动化性能测试(下)
利用 Rational Functional Tester 实现 ITCL (或者 IBM) 框架
使用Rational Functional Tester 测试应用软件的操作响应速度
对比使用 Rational Robot 和 Rational Functional Tester 进行软件测试
使用 IBM Rational Functional Tester 自动化定制控件
基于Rational Functional Tester 的测试脚本自动修复技术
扩展 Rational Functional Tester 的对象识别技术
使用 IBM Rational Functional Tester 实现全球化应用的自动化测试