首頁 > 後端開發 > C++ > 如何在 Linux 中監控 C 程式的記憶體使用情況?

如何在 Linux 中監控 C 程式的記憶體使用情況?

Barbara Streisand
發布: 2024-12-20 02:28:13
原創
686 人瀏覽過

How Can I Monitor a C   Program's Memory Usage in Linux?

如何監控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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板