Cara Memantau Penggunaan Memori Program Berjalan dalam C
Menganggar penggunaan memori semasa masa jalan adalah penting untuk mengoptimumkan prestasi aplikasi dan mencegah kebocoran memori . C menyediakan berbilang pendekatan untuk mendapatkan semula maklumat penggunaan memori, menangani keperluan khusus.
Satu kaedah yang kerap digunakan ialah memanfaatkan fungsi getrusage, yang mendapatkan semula data tentang penggunaan sumber proses. Walau bagaimanapun, dalam kes tertentu, pengguna menghadapi kesukaran mendapatkan hasil yang tepat menggunakan pendekatan ini.
Penyelesaian Alternatif untuk Persekitaran Linux
Untuk sistem Linux, strategi alternatif melibatkan mengakses fail dalam direktori /proc/pid. Setiap fail membentangkan pelbagai maklumat yang berkaitan dengan proses sistem. Coretan kod berikut menggambarkan cara mendapatkan kedua-dua saiz memori maya (VM) dan saiz set pemastautin (RSS) dalam Kilobait (KB):
#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; }
Contoh Penggunaan
Untuk menggunakan kaedah ini, integrasikan fungsi process_mem_usage ke dalam program anda dan panggil ia untuk mendapatkan semula penggunaan memori semasa:
int main() { double vm, rss; process_mem_usage(vm, rss); std::cout << "VM: " << vm << "; RSS: " << rss << std::endl; }
Pendekatan ini memberikan anggaran yang boleh dipercayai bagi penggunaan ingatan, menambah had yang dihadapi dengan kaedah lain.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memantau Penggunaan Memori Program C dalam Linux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!