Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mendapatkan Kembali Penggunaan Memori Masa Jalan Program C dengan Tepat di Linux?

Bagaimanakah Saya Boleh Mendapatkan Kembali Penggunaan Memori Masa Jalan Program C dengan Tepat di Linux?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-11 09:34:14170semak imbas

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

Mendapatkan semula Penggunaan Memori Runtime dalam C dengan /proc/pid

Dalam C , mendapatkan maklumat tentang penggunaan memori program semasa runtime boleh menjadi mencabar . Walaupun percubaan menggunakan getrusage(), poster secara konsisten menemui nilai sifar. Pendekatan alternatif wujud yang melibatkan pertanyaan fail dalam direktori /proc/pid.

Pada sistem Linux, /proc/pid mengandungi maklumat khusus proses, termasuk penggunaan memori. Salah satu fail yang paling boleh dipercayai untuk tujuan ini ialah /proc/self/stat. Dengan menghuraikan fail ini, kami boleh mengekstrak medan berikut:

  • vsize: Saiz memori maya program dalam kilobait (KB)
  • rss: Saiz set pemastautin program dalam KB (jumlah fizikal memori yang sedang digunakan)

Untuk mendapatkan semula nilai ini, kita boleh menggunakan process_mem_usage() function:

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;
}

Dalam fungsi utama() kami, kami boleh menggunakan process_mem_usage() untuk mencetak penggunaan memori maya dan saiz set pemastautin:

int main()
{
    double vm, rss;
    process_mem_usage(vm, rss);
    cout << "VM: " << vm << "; RSS: " << rss << endl;
}

Menggunakan pendekatan ini , kami boleh mendapatkan maklumat penggunaan memori program semasa dengan tepat pada masa jalan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Kembali Penggunaan Memori Masa Jalan Program C dengan Tepat di Linux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn