C++獲取內(nèi)存使用情況小結(jié)
在程序編程過程中,為了防止出現(xiàn)內(nèi)存泄漏情況出現(xiàn),需要持續(xù)關(guān)注內(nèi)存程序內(nèi)存占用情況。如下方式實(shí)現(xiàn)獲取當(dāng)前進(jìn)程內(nèi)存使用情況:
linux:
void my_top(string path, bool flag) { if(flag) { FILE* read_top = fopen("/proc/self/status", "r"); char line_rss[128]; unsigned long long Pid, VmSize, VmRSS; while (fgets(line_rss, 128, read_top) != NULL) { if (strncmp(line_rss, "Pid:", 4) == 0) { string str(line_rss + 4); Pid = strtoull(str.c_str(), NULL, 19); } if (strncmp(line_rss, "VmSize:", 7) == 0) { string str(line_rss + 7); VmSize = strtoull(str.c_str(), NULL, 19); } if (strncmp(line_rss, "VmRSS:", 6) == 0) { string str(line_rss + 6); VmRSS = strtoull(str.c_str(), NULL, 19); } if(Pid < 0 || VmSize < 0 || VmRSS < 0) { fclose(read_top); break; } } fclose(read_top); ofstream writer_top(path, ios::app); writer_top << Pid << " " << VmSize << " " << VmRSS << endl; writer_top.close(); } else { ofstream writer_top(path, ios::app); writer_top << "0" << " " << "0" << " " << "0" << endl; writer_top.close(); } }
其他資源:
VmPeak: 表示進(jìn)程所占用最大虛擬內(nèi)存大小
VmSize: 表示進(jìn)程當(dāng)前虛擬內(nèi)存大小
VmLck: 表示被鎖定的內(nèi)存大小
VmHWM: 表示進(jìn)程所占用物理內(nèi)存的峰值
VmRSS: 表示進(jìn)程當(dāng)前占用物理內(nèi)存的大小(與procrank中的RSS)
VmData: 表示進(jìn)程數(shù)據(jù)段的大小
VmStk: 表示進(jìn)程堆棧段的大小
VmExe: 表示進(jìn)程代碼的大小
VmLib: 表示進(jìn)程所使用共享庫的大小
VmPTE: 表示進(jìn)程頁表項(xiàng)的大小
windows:
#include <windows.h> #include <psapi.h> #include <stdio.h> int main() { PROCESS_MEMORY_COUNTERS pmc; if (GetProcessMemoryInfo(GetCurrentProcess(), &pmc, sizeof(pmc))) { printf("當(dāng)前進(jìn)程占用內(nèi)存大小為:%d KB\n", pmc.WorkingSetSize / 1024); } return 0; }
到此這篇關(guān)于C++獲取內(nèi)存使用情況小結(jié)的文章就介紹到這了,更多相關(guān)C++獲取內(nèi)存內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
高效實(shí)現(xiàn)整型數(shù)字轉(zhuǎn)字符串int2str的方法
下面小編就為大家?guī)硪黄咝?shí)現(xiàn)整型數(shù)字轉(zhuǎn)字符串int2str的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03C++實(shí)現(xiàn)圖的鄰接矩陣存儲(chǔ)和廣度、深度優(yōu)先遍歷實(shí)例分析
這篇文章主要介紹了C++實(shí)現(xiàn)圖的鄰接矩陣存儲(chǔ)和廣度、深度優(yōu)先遍歷,實(shí)例分析了C++實(shí)現(xiàn)圖的遍歷技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04關(guān)于C語言中弱符號(hào)與弱引用的實(shí)際應(yīng)用問題
在編碼過程中,我們經(jīng)常遇到符號(hào)重定義的錯(cuò)誤問題,本文通過實(shí)例代碼展示給大家介紹了C語言弱符號(hào)與弱引用的實(shí)際應(yīng)用問題,一起看看吧2021-09-09教你5分鐘輕松搞定內(nèi)存字節(jié)對(duì)齊
隨便google一下,人家就可以跟你解釋的,一大堆的道理,我們沒怎么多時(shí)間,討論為何要對(duì)齊.直入主題,怎么判斷內(nèi)存對(duì)齊規(guī)則,sizeof的結(jié)果怎么來的,請(qǐng)牢記以下3條原則2013-09-09C++ LeetCode1780判斷數(shù)字是否可以表示成三的冪的和
這篇文章主要為大家介紹了C++ LeetCode1780判斷數(shù)字是否可以表示成三的冪的和題解示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12關(guān)于STL中l(wèi)ist容器的一些總結(jié)
list就是數(shù)據(jù)結(jié)構(gòu)中的雙向鏈表(根據(jù)sgi stl源代碼),因此它的內(nèi)存空間是不連續(xù)的,通過指針來進(jìn)行數(shù)據(jù)的訪問,這個(gè)特點(diǎn)使得它的隨即存取變的非常沒有效率,因此它沒有提供[]操作符的重載2013-09-09