如何監控C 語言中正在運行的程式的記憶體使用情況
估計運行時的記憶體消耗對於最佳化應用程式效能和防止內存洩漏至關重要。 C 提供了多種方法來檢索記憶體使用信息,以滿足特定要求。
經常使用的一種方法是利用 getrusage 函數,該函數會擷取有關進程資源利用率的資料。然而,在某些情況下,使用者使用這種方法獲得準確結果會遇到困難。
Linux 環境的替代解決方案
對於 Linux 系統,另一個策略是存取以下檔案: /proc/pid 目錄。每個文件都提供與系統進程相關的不同資訊。以下程式碼片段說明如何取得以千位元組(KB) 為單位的虛擬記憶體大小(VM) 和駐留集大小(RSS):
#include <unistd.h> #include <ios> #include <iostream> #include <fstream> #include <string> void process_mem_usage(double& vm_usage, double& resident_set) { std::ifstream stat_stream("/proc/self/stat", std::ios_base::in); unsigned long vsize; long rss; stat_stream >> vsize >> rss; // Skipping irrelevant fields long page_size_kb = sysconf(_SC_PAGE_SIZE) / 1024; vm_usage = vsize / 1024.0; resident_set = rss * page_size_kb; }
使用範例
要利用此方法,請將process_mem_usage函數整合到您的程式中並調用它來檢索當前記憶體用法:
int main() { double vm, rss; process_mem_usage(vm, rss); std::cout << "VM: " << vm << "; RSS: " << rss << std::endl; }
此方法提供了記憶體使用情況的可靠估計,補充了其他方法遇到的限制。
以上是如何在 Linux 中監控 C 程式的記憶體使用情況?的詳細內容。更多資訊請關注PHP中文網其他相關文章!