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
Lepaskan: 2024-12-11 09:34:14
asal
262 orang telah melayarinya

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;
}
Salin selepas log masuk

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;
}
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan