> 백엔드 개발 > C++ > Linux에서 C 프로그램의 런타임 메모리 사용량을 정확하게 검색하려면 어떻게 해야 합니까?

Linux에서 C 프로그램의 런타임 메모리 사용량을 정확하게 검색하려면 어떻게 해야 합니까?

Mary-Kate Olsen
풀어 주다: 2024-12-11 09:34:14
원래의
208명이 탐색했습니다.

How Can I Accurately Retrieve a C   Program's Runtime Memory Usage on Linux?

/proc/pid를 사용하여 C에서 런타임 메모리 사용량 검색

C에서는 런타임 시 프로그램의 메모리 사용량에 대한 정보를 얻는 것이 어려울 수 있습니다. . getrusage()를 사용한 시도에도 불구하고 포스터는 지속적으로 0 값을 발견했습니다. /proc/pid 디렉터리에 있는 파일을 쿼리하는 것과 관련된 대체 접근 방식이 있습니다.

Linux 시스템에서 /proc/pid에는 메모리 사용량을 포함한 프로세스별 정보가 포함되어 있습니다. 이 목적에 가장 신뢰할 수 있는 파일 중 하나는 /proc/self/stat입니다. 이 파일을 구문 분석하여 다음 필드를 추출할 수 있습니다.

  • vsize: 프로그램의 가상 메모리 크기(KB)
  • rss: 프로그램의 상주 세트 크기(KB) 현재 사용 중인 메모리)

이러한 값을 검색하려면 다음을 활용할 수 있습니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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