Notice
Recent Posts
Recent Comments
Link
관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] 2. memgraph 메모리 프로파일링 - vmmap을 사용하여 문제가 있는 코드의 메모리 주소 찾아내기 본문

iOS 응용 (swift)

[iOS - swift] 2. memgraph 메모리 프로파일링 - vmmap을 사용하여 문제가 있는 코드의 메모리 주소 찾아내기

jake-kim 2023. 12. 25. 23:20

* 가장 기초) iOS 메모리 기초 개념 - virtual memory, dirty memory, clean memory, compressed memory, swapped memory 이해하기 포스팅 글

 

1. memgraph 메모리 프로파일링 - 샘플 준비

2. memgraph 메모리 프로파일링 - vmmap을 사용하여  문제가 있는 코드의 메모리 주소 찾아내기

3. memgraph 메모리 프로파일링 - 메모리 주소로 코드 역추적하기

vmmap으로 memgraph파일 분석

  • .mamgraph 파일은 이전 포스팅 글 참고
    • 분석 목적: 큰 메모리를 잡아먹는 곳의 메모리를 분석하여 역으로 어떤 코드 부분인지 파악하는 것
vmmap --summary ExImageOptimazationBackground\[23907\].memgraph

결과)

  • Physical footprint 총 2.5G 사용 확인
  • swapped size 중 CG raster data를 보면 2.4G를 사용한 것을 확인 
    • 2.5G중에 2.4G가 swap메모리라는 것은 메모리 공간을 1G만 사용하고 디스크 공간을 2.4G사용한다는 의미 (가상 메모리 방식)
    • CG raster data는 Core Graphics이며 그래픽 관련 이슈라는 것을 짐작가능

  • 위에서 본 대로,CG raster data 메모리를 많이 사용하고 있으므로 이미지 관련 데이터만 summary없이 살펴보기
vmmap ExImageOptimazationBackground\[23907\].memgraph | grep "CG raster data"

결과)

  • 여기서 256K  0K  0K  256K 로 나오는 부분은 순서대로, vitual, resident, dirty, compressed메모리를 의미
    • virtual memory: 디스크에 있는 페이지를 swap한 것을 포함한 RAM 메모리 공간 
    • resident memory: RAM에 올라가 있는 용량이므로 프로세스가 사용할 수 있는 메모리
    • dirty memory: 페이지 단위(4KB 크기)로 추적되는 프로세스에 의해 수정된 데이터 메모리 공간
    • compressed memory: 중복된 데이터를 제거하고 메모리 사용량을 최적화한 메모리 공간

맨 아래에 요약 된 메모리 확인)

  • 마지막 데이터의 시작 주소를 확인하고 복사

 

(이 메모리 주소를 가지고 코드 부분을 역추적할 수 있는데, 이 내용은 다음 포스팅 글에서 계속...)

* 전체 코드: https://ios-development.tistory.com/1601

* 참고

- https://developer.apple.com/videos/play/wwdc2018/416/

 

Comments