首頁 >後端開發 >C++ >如何在Linux上準確取得C程式運行時記憶體使用量?

如何在Linux上準確取得C程式運行時記憶體使用量?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-11 09:34:14170瀏覽

How Can I Accurately Retrieve a C   Program's Runtime Memory Usage on Linux?

使用/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