如何在Linux上準確取得C程式運行時記憶體使用量?
Dec 11, 2024 am 09:34 AM使用/proc/pid 檢索C 中的運行時內存使用情況
在C 中,獲取內存有關程序在運行時的內存使用情況的資訊可能具有挑戰性。儘管嘗試使用 getrusage(),發文者始終遇到零值。另一種方法是查詢 /proc/pid 目錄中的檔案。
在 Linux 系統上,/proc/pid 包含特定於進程的信息,包括記憶體使用情況。為此目的最可靠的文件之一是 /proc/self/stat。透過解析該文件,我們可以提取以下欄位:
- vsize:程式的虛擬記憶體大小,以千位元組(KB) 為單位
- rss:程式的駐留集大小,以KB為單位(實體記憶體量)目前正在使用的記憶體)
要擷取這些值,我們可以利用process_mem_usage() 函數:
void process_mem_usage(double& vm_usage, double& resident_set) { // Parse /proc/self/stat ifstream stat_stream("/proc/self/stat"); stat_stream >> ... >> vsize >> rss; stat_stream.close(); // Convert to KB long page_size_kb = sysconf(_SC_PAGE_SIZE) / 1024; vm_usage = vsize / 1024.0; resident_set = rss * page_size_kb; }
登入後複製
在main() 函數中,我們可以使用process_mem_usage()來列印虛擬記憶體使用情況和駐留集大小:
int main() { double vm, rss; process_mem_usage(vm, rss); cout << "VM: " << vm << "; RSS: " << rss << endl; }
登入後複製
使用此方法,我們可以準確地取得目前程式執行時的記憶體使用資訊。
以上是如何在Linux上準確取得C程式運行時記憶體使用量?的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)