런타임 시 정확한 메모리 사용량 측정항목을 얻는 것은 성능을 최적화하고 메모리 관련 문제를 디버깅하는 데 중요합니다. . 이 기사에서는 주로 가상 메모리 크기(VIRT)와 상주 세트 크기(RES)에 중점을 두고 C 애플리케이션에서 메모리 사용 정보를 검색하는 다양한 접근 방식을 살펴봅니다.
제공된 코드 조각에서 볼 수 있듯이 getrusage() 함수를 사용하려는 초기 시도는 종종 0 값을 얻는 결과를 낳습니다. 이는 주로 getrusage()가 특정 프로세스가 아닌 전체 시스템에서 리소스 사용 정보를 검색하기 때문입니다.
Linux 시스템에서는 보다 안정적인 접근 방식입니다. /proc/pid 디렉토리에서 정보를 읽는 작업이 포함됩니다. 각 프로세스에는 다양한 통계가 유지 관리되는 전용 디렉터리가 있습니다.
다음 코드 조각은 /proc/self/stat 파일을 읽어 프로세스의 가상 메모리 크기( vsize) 및 상주 세트 크기(rss):
void process_mem_usage(double& vm_usage, double& resident_set) { ifstream stat_stream("/proc/self/stat", ios_base::in); unsigned long vsize; long rss; stat_stream >> vsize >> rss; 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); cout << "VM: " << vm << "; RSS: " << rss << endl; }
위 내용은 런타임 시 C 메모리 사용량을 정확하게 모니터링하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!