使用 /proc/pid 检索 C 中的运行时内存使用情况
在 C 中,获取有关程序在运行时的内存使用情况的信息可能具有挑战性。尽管尝试使用 getrusage(),发帖者始终遇到零值。另一种方法是查询 /proc/pid 目录中的文件。
在 Linux 系统上,/proc/pid 包含特定于进程的信息,包括内存使用情况。为此目的最可靠的文件之一是 /proc/self/stat。通过解析该文件,我们可以提取以下字段:
要检索这些值,我们可以利用process_mem_usage() 函数:
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; }
在 main() 函数中,我们可以使用 process_mem_usage() 来打印虚拟内存使用情况和驻留集大小:
int main() { double vm, rss; process_mem_usage(vm, rss); cout << "VM: " << vm << "; RSS: " << rss << endl; }
使用这种方法,我们可以准确获取当前程序运行时的内存使用信息。
以上是如何在Linux上准确获取C程序运行时内存使用情况?的详细内容。更多信息请关注PHP中文网其他相关文章!