>백엔드 개발 >C++ >런타임 시 C 프로그램 메모리 사용량(VIRT 및 RES)을 효율적으로 모니터링하려면 어떻게 해야 합니까?

런타임 시 C 프로그램 메모리 사용량(VIRT 및 RES)을 효율적으로 모니터링하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-05 21:22:10693검색

How Can I Efficiently Monitor C   Program Memory Usage (VIRT and RES) at Runtime?

C를 사용하여 런타임 시 메모리 사용량 가져오기

이 문서에서는 런타임 시 메모리 사용량 정보, 특히 VIRT 및 RES를 얻는 방법을 조사합니다. C .

시도한 접근 방식과 과제

이 데이터를 검색하기 위해 getrusage 기능을 활용하려는 시도는 지속적으로 0의 결과를 가져왔습니다.

/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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.