우리 회사는 프로세스를 개발했고 저는 새로운 방법을 추가해야 했고, 이는 약간의 메모리 오버헤드를 의미했습니다. 측정해야 해요. 그래서 저는 svmon
그것을 제 프로세스에 적용했습니다. 원시 메모리 소비 프로필은 다음과 같습니다.
$ svmon -P my_pid -O summary=basic,unit=KB
Pid Command Inuse Pin Pgsp Virtual
4391290 ????? 596384 41900 0 577708
그런 다음 요청을 하여 "새 방법"이 트리거되고 출력이 다음과 같이 변경되었습니다.
$ svmon -P my_pid -O summary=basic,unit=KB
Pid Command Inuse Pin Pgsp Virtual
4391290 ????? 596480 41900 0 577796
..."메서드"가 해시 테이블에서 일부 요소를 이동하고 새 요소에 삽입한 다음 해시 테이블 데크의 끝으로 푸시하기 때문에 의미가 없습니다. 큐에 저장된 각 해시 값은 100개 이하의 요소를 보유하며 각 요소는 기본적으로 포인터입니다. 따라서 메서드 실행으로 인해 거의 100KiB가 추가되지는 않습니다.
Inuse
또한 RAM보다 RAM이 더 많으면 혼란스럽습니다 virtual
.
메모리 소비 불일치의 이유는 무엇입니까?
내 초기 추측은 운영 체제가 프로세스에 대해 새 메모리 페이지를 할당했거나 미리 할당했다는 것입니다. 하지만 그렇다면 동일한 메서드가 호출될 때마다 더 많은 페이지를 추가할 필요가 없습니다.