vmmap(Virtual Memory Map)

vmmap이란 Xcode, macOS에서 사용하는 가상 메모리 매핑 도구입니다.

특정 프로세스의 메모리 사용량을 맥 가상 메모리로 매핑하여 메모리 사용량을 보여줍니다.

터미널에서 사용하며, 실 기기의 메모리가 아니라 맥 기반 메모리를 매핑하게 됩니다.

 

 

vmmap 사용방법

Xcode에서 빌드 후 특정 프로세스중에서 확인하기 위해 break point를 걸거나 Debug Memory Graph를 열면 좌측에 프로젝트명 PID 번호가 나타나게 됩니다.

터미널에서 해당 PID를 이용하여 vmmap을 실행할 수 있습니다.

$ vmmap PID

실행 결과

_DATA, _TEXT:  실행코드 및 전역변수

malloc: 힙 영역

malloc guard page: 힙 오버플로우를 방지용 영역

stack: 스택 영역

stack guard: 스택 오버플로우 방지용 영역

 

해당 영역에 대한 주소범위도 나타낼 수 있습니다.

 

 

Stack 영역

$ vmmap PID | grep Stack

 

 

Heap(malloc) 영역

$ vmmap PID | grep Malloc

 

메모리 누수 확인

$ leaks PID

 

 

그래서 이걸 어디에 써먹고 왜 사용할까

데이터 사용량을 알 수 있다 해도 실제 기기에서의 데이터 사용량이 아닌 가상 메모리의 사용량입니다.

메모리 누수 현황을 알고 싶어도 현재 Xcode에서 Profile과 Debug Memory Graph 기능을 제공합니다.

 

현업에서 어디에 사용할 수 있는지 피드백도 받아보고 이런 저런 기능을 사용한 결과,

vmmap은 사용 하지 않아도 된다. 라는 결론이 나왔습니다.

 

Profile과 Debug Memory Graph는 vmmap보다 더 직관적인 UI를 제공합니다. 

그래서 객체간의 참조 관계나 누수 현황들을 보고 분석하기에 더 좋습니다.

 

vmmap은 더 낮은 레벨의 분석이 요구될 때 사용됩니다.

빠르게 터미널을 통해 메모리 사용량을 확인할 수 있지만,

특정 프로세스 즉 중단된 시점의 PID를 통해 메모리 사용량을 알 수 있고 실시간으로 확인하는것은 profile이 더 적합합니다.

 

따라서, 메모리 최적화의 큰 파이를 차지하는 메모리 누수해결은 현재 Xcode에서 지원하는 Profile과 Debug Memory Graph을 통해 훨씬 직관적으로 분석할 수 있기 때문에 vmmap까지 사용하지 않아도 됩니다..

 

'iOS' 카테고리의 다른 글

UICollectionViewLayout과 UICollectionViewFlowLayout  (0) 2025.03.03
UIBeizerPath  (0) 2025.02.26
NotificationCenter  (0) 2025.02.20
iOS Combine  (0) 2025.02.19
URLSession 번역  (0) 2024.12.13

+ Recent posts