使用 C 在运行时获取内存使用情况
本文研究了如何在运行时获取内存使用信息,特别是 VIRT 和 RES C .
尝试过的方法和挑战
尝试利用 getrusage 函数检索此数据始终产生零结果。
使用 /proc 文件的替代方法
对于 Linux 系统,从“/proc/pid”文件读取数据提供了 ioctl() 的可靠替代方案。以下是演示此方法的 C 构造片段:
#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; }
以上是如何在运行时有效监控 C 程序内存使用情况(VIRT 和 RES)?的详细内容。更多信息请关注PHP中文网其他相关文章!