c 獲取程序記憶體使用情況

2021-06-08 18:39:15 字數 3283 閱讀 9344

直接看**吧,不過有點亂,細心看下吧:

// processmemory.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

//用法:

//    argv[1]是子程序的包含路徑的完整可執行檔名

//    processmemory notepad 06. 07.//編譯: 08.

//    cl processmemory.cpp   09.  

//功能:   

//    獲取子程序的記憶體使用情況 12.  

#include

#include

#include

#include

#include

using namespace std;

#pragma comment(lib, "psapi.lib") 

/*typedef struct _process_memory_counters process_memory_counters,

*pprocess_memory_counters;

*///提公升程序許可權

bool adjustpurview()

void printprocessnameandid( dword processid )

process_memory_counters pmc;

getprocessmemoryinfo(hprocess, &pmc, sizeof(pmc));

//getprocessmemoryinfo(processinfo.hprocess, &pmcex, sizeof(pmcex));

//以下各項均以kb為單位 45.   

//在任務管理器中顯示為:峰值工作設定(記憶體)

printf("%d/n", pmc.peakworkingsetsize/1024);

//在任務管理器中顯示為:工作設定(記憶體)

printf("%d/n", pmc.workingsetsize/1024);

printf("%d/n", pmc.quotapeakpagedpoolusage/1024);

//在任務管理器中顯示為:分頁池

printf("%d/n", pmc.quotapagedpoolusage/1024);

printf("%d/n", pmc.quotapeaknonpagedpoolusage/1024);

//在任務管理器中顯示為:非頁面緩衝池

printf("%d/n", pmc.quotanonpagedpoolusage/1024);

printf("%d/n", pmc.peakpagefileusage/1024);

//在任務管理器中顯示為:記憶體(專用工作集) //這是任務管理器的預設顯示項! (虛擬記憶體)

printf("%d/n", pmc.pagefileusage/1024);

}//回顯程序名稱和id

printf( " %-20d%-20s", processid , szprocessname);

closehandle( hprocess );

}int _tmain(int argc, _tchar* argv)

;   

startupinfo.cb = sizeof(startupinfo); 

//createprocess的第二個引數   

process_information processinfo = ;   

dword aprocesses[1024], cbneeded, cprocesses;

unsigned int i;

//列舉系統程序id列表

if ( !enumprocesses( aprocesses, sizeof(aprocesses), &cbneeded ) )

//計算程序數量

cprocesses = cbneeded / sizeof(dword);

// 輸出每個程序的名稱和id

for ( i = 0; i < cprocesses; i++ )

//createprocess(null, argv[1], null, null, true, null, null, null, &startupinfo, &processinfo);

作用為:子程序執行結束後,檢視它的記憶體使用情況。

此時,所有非peak的項均為0,所有peak項顯示執行期間的峰值

如果想在子程序結束之前監控它的記憶體使用情況,可以將這句替換為 \

sleep(1000);

作用為:子程序執行1000毫秒之後,檢視它的記憶體使用情況

//waitforsingleobject(processinfo.hprocess, infinite);

//process_memory_counters pmc;

process_memory_counters_ex pmcex;

//getprocessmemoryinfo(processinfo.hprocess, &pmc, sizeof(pmc));

getprocessmemoryinfo(processinfo.hprocess, &pmcex, sizeof(pmcex));

以下各項均以kb為單位 45.   

在任務管理器中顯示為:峰值工作設定(記憶體)

//printf("%d/n", pmc.peakworkingsetsize/1024);

在任務管理器中顯示為:工作設定(記憶體)

//printf("%d/n", pmc.workingsetsize/1024);

//printf("%d/n", pmc.quotapeakpagedpoolusage/1024);

在任務管理器中顯示為:分頁池

//printf("%d/n", pmc.quotapagedpoolusage/1024);

//printf("%d/n", pmc.quotapeaknonpagedpoolusage/1024);

在任務管理器中顯示為:非頁面緩衝池

//printf("%d/n", pmc.quotanonpagedpoolusage/1024);

//printf("%d/n", pmc.peakpagefileusage/1024);

在任務管理器中顯示為:記憶體(專用工作集) //這是任務管理器的預設顯示項!

//printf("%d/n", pmc.pagefileusage/1024);

return 0;   

}

檢視程序記憶體使用情況

ps命令是linux下常見的檢視程序狀況的程式,它有幾個字段可以用來檢視 程序記憶體使用情況 sz,rss,vsz。分別說明如下 假如我要檢視程式a.out的記憶體使用情況,操作如下 a.out 1 10069 ps o sz,rsz,vsz pid sz rss vsz s tty time co...

PHP獲取記憶體使用情況

php內建函式memory get usage 能返回當前分配給php指令碼的記憶體量,單位是位元組 byte 在web實際開發中,這些函式非常有用,我們可以使用它來除錯php 效能。memory get usage 函式返回記憶體使用量,memory get peak usage 函式返回記憶體使...

Java 獲取記憶體使用情況

公司要求將各個裝置上傳的資料分析並且匯出到統一的乙個表中,目前在準備,資料比較多,所以需要考慮到記憶體的使用情況,經網上查詢使用,出現了以下問題。logutils.debug totalmemory runtime.getruntime totalmemory 1024 1024 m logutil...