使用/proc/pid 檢索C 中的運行時內存使用情況
在C 中,獲取內存有關程序在運行時的內存使用情況的資訊可能具有挑戰性。儘管嘗試使用 getrusage(),發文者始終遇到零值。另一種方法是查詢 /proc/pid 目錄中的檔案。
在 Linux 系統上,/proc/pid 包含特定於進程的信息,包括記憶體使用情況。為此目的最可靠的文件之一是 /proc/self/stat。透過解析該文件,我們可以提取以下欄位:
要擷取這些值,我們可以利用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中文網其他相關文章!