나는 두 개의 C 프로그램을 작성했습니다
- 하나는 함수 포인터를 사용하는 것이고,
- 다른 하나는 함수 포인터가 없습니다.
이제 이 두 프로그램이 소비하는 메모리를 알고 메모리를 최적화하는 방법을 알고 싶습니다.
답변1
나중에 사용되는 메모리에만 관심이 있다면 GNU를 사용하세요 time
.
command time -v myprogram
(위에서는 내장 명령이 아닌 bash
외부 명령을 호출하는 방법을 사용하므로 쉘이 다를 수 있습니다.)time
bash
또는 GNU memusage
:
memusage -T ./myprogram
지속적으로 사용되는 메모리(예: 장기 실행 프로세스 중)에 관심이 있는 경우 다른 답변 중 하나가 더 나을 수 있습니다. 이 관련 질문도 참조하십시오.메모리 사용량 명령, 구문은 time 명령과 유사합니다.
답변2
답변3
다음은 시스템의 모든 sshd 프로세스에 대한 상주 세트 크기 및 가상 메모리 크기입니다.
ulric@qvp2:~$ ps -eo rss,vsz,args|grep sshd|grep -v grep
448 55292 /usr/sbin/sshd -D
5176 147460 sshd: ulric [priv]
2776 149704 sshd: ulric@pts/3
아니면 더 쉬울 수도 있습니다.
ulric@qvp2:~$ ps aux|head -n 1&&ps aux|grep sshd|grep -v grep
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 13221 0.0 0.0 55292 448 ? Ss Apr21 0:01 /usr/sbin/sshd -D
root 16046 0.0 0.5 147460 5176 ? Ss 08:12 0:00 sshd: ulric [priv]
ulric 16187 0.0 0.2 149704 2776 ? S 08:12 0:00 sshd: ulric@pts/3
더 많은 옵션을 보려면 ps 맨페이지를 참조하세요.
답변4
가장 간단한 방법은 힙 포인터를 캡처하는 것입니다.sbrk(0), 이를 64비트 부호 없는 정수로 변환하고 메모리를 할당한 후 차이를 계산합니다.