> 백엔드 개발 > C++ > Linux에서 C 프로그램의 메모리 사용량을 어떻게 모니터링할 수 있습니까?

Linux에서 C 프로그램의 메모리 사용량을 어떻게 모니터링할 수 있습니까?

Barbara Streisand
풀어 주다: 2024-12-20 02:28:13
원래의
688명이 탐색했습니다.

How Can I Monitor a C   Program's Memory Usage in Linux?

C에서 실행 중인 프로그램의 메모리 사용량을 모니터링하는 방법

런타임 중 메모리 소비를 예측하는 것은 애플리케이션 성능을 최적화하고 메모리 누수를 방지하는 데 중요합니다. . C는 특정 요구 사항을 해결하면서 메모리 사용량 정보를 검색하는 다양한 접근 방식을 제공합니다.

자주 사용되는 방법 중 하나는 프로세스의 리소스 사용량에 대한 데이터를 검색하는 getrusage 함수를 활용하는 것입니다. 그러나 경우에 따라 사용자는 이 접근 방식을 사용하여 정확한 결과를 얻는 데 어려움을 겪습니다.

Linux 환경을 위한 대체 솔루션

Linux 시스템의 경우 대체 전략은 내부 파일에 액세스하는 것입니다. /proc/pid 디렉토리. 각 파일은 시스템 프로세스와 관련된 다양한 정보를 제공합니다. 다음 코드 조각은 가상 메모리 크기(VM)와 상주 세트 크기(RSS)를 모두 킬로바이트(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;
}
로그인 후 복사

사용 예

이 방법을 활용하려면 process_mem_usage 함수를 프로그램에 통합하고 호출하여 검색하세요. 현재 메모리 사용량:

int main() {
    double vm, rss;
    process_mem_usage(vm, rss);
    std::cout << "VM: " << vm << "; RSS: " << rss << std::endl;
}
로그인 후 복사

이 접근 방식은 신뢰할 수 있는 메모리 사용량 추정치를 제공하여 다른 방법에서 발생하는 제한 사항을 보완합니다.

위 내용은 Linux에서 C 프로그램의 메모리 사용량을 어떻게 모니터링할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿