Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Memantau Penggunaan Memori Program C (VIRT dan RES) dengan Cekap pada Runtime?
Menggunakan C untuk Mendapatkan Penggunaan Memori pada Masa Jalan
Artikel ini menyiasat cara mendapatkan maklumat penggunaan memori, khususnya VIRT dan RES, pada masa jalan dalam C .
Mencuba Pendekatan dan Cabaran
Percubaan untuk menggunakan fungsi getrusage untuk mendapatkan semula data ini menghasilkan hasil sifar secara konsisten.
Pendekatan Alternatif Menggunakan Fail /proc
Untuk sistem Linux, membaca data daripada fail "/proc/pid" menawarkan alternatif yang boleh dipercayai kepada ioctl(). Berikut ialah coretan dengan binaan C yang menunjukkan pendekatan ini:
#include <unistd.h> #include <ios> #include <iostream> #include <fstream> #include <string> void process_mem_usage(double& vm_usage, double& resident_set) { vm_usage = 0.0; resident_set = 0.0; ifstream stat_stream("/proc/self/stat", ios_base::in); string vsize, rss; stat_stream >> vsize >> rss; stat_stream.close(); long page_size_kb = sysconf(_SC_PAGE_SIZE) / 1024; vm_usage = stod(vsize) / 1024.0; resident_set = stod(rss) * page_size_kb; } int main() { double vm, rss; process_mem_usage(vm, rss); std::cout << "VM: " << vm << "; RSS: " << rss << std::endl; }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memantau Penggunaan Memori Program C (VIRT dan RES) dengan Cekap pada Runtime?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!