내일배일캠프 36일차

임클·2025년 4월 21일

내일배움캠프

목록 보기
37/44
post-thumbnail

하루하라 알고리즘


Xcode Instruments를 활용한 앱 성능 및 메모리 분석

Instruments 사용법 - TIL

사용자가 Xcode에서 Instruments를 사용하여 앱 성능을 분석하는 방법에 대해 묻고 있습니다. 주로 Time Profiler, Allocations, Leaks 도구에 대해 설명해야 합니다.

  • Time Profiler: 앱 실행 중 CPU 사용량을 기록해 성능 병목을 찾습니다.
  • Allocations: 메모리 할당과 객체 생성을 분석해 메모리 문제를 파악합니다.
  • Leaks: 메모리 누수를 탐지하고, 누수된 객체 트레킹을 통해 해결 방법을 찾습니다.

각 도구를 어떻게 활용할 수 있을지 자세히 설명할 예정이에요.

Instruments로 성능 분석하기 - TIL

사용자는 Xcode Instruments를 사용한 성능 분석 방법을 TIL로 원하셨습니다. 분석할 내용은 Time Profiler, Allocations, 그리고 Leaks입니다.

  1. Instruments 소개
  2. Time Profiler 사용법
    • 성능 이슈 분석 방법
  3. Allocations 사용법
    • 메모리 누수 탐지
  4. Leaks 사용법
    • 누수 찾는 방법
  5. 요약

이전에 사용자가 굵은 글씨(Bold)를 지양한다고 했으니, 마크다운 헤딩은 사용하되 굵은 글씨는 피해야 할 것 같습니다. TIL은 세부적이고 자세하게 작성하려고 해요.

8초 동안 생각함

TIL: Xcode Instruments를 활용한 앱 성능 및 메모리 분석

  1. Instruments 실행 및 템플릿 선택
    • Xcode 메뉴에서 Product > Profile(⌘I) 선택
    • Instruments 앱이 뜨면 다음 중 필요한 템플릿을 고른다
      1. Time Profiler
      2. Allocations
      3. Leaks
    • Record 버튼을 눌러 대상 앱을 실행하고, 검사하려는 시나리오(화면 전환, 기능 사용 등)를 재현한다
  2. Time Profiler로 성능 이슈 찾기
    • 개요
      • CPU 샘플링 기반 프로파일러로, 어느 함수가 얼마나 CPU를 소비하는지 파악
    • 주요 단계
      1. Record 후 앱을 평소처럼 사용하며 성능 저하 지점을 재현
      2. Call Tree 뷰에서 ‘Invert Call Tree’ 옵션으로 호출량이 많은 핫스팟(Hot Spot) 확인
      3. ‘Hide System Libraries’를 켜서 내 코드만 집중
      4. 각 샘플의 Self vs. Total 시간을 비교하며 병목 지점 탐색
      5. 심각한 함수를 선택해 Source 링크 클릭 → Xcode 에디터에서 해당 코드로 이동
  3. Allocations Instrument로 메모리 사용량 및 잠재적 누수 감지
    • 개요
      • 할당된 메모리 객체를 시간 흐름에 따라 추적
    • 주요 단계
      1. Allocations 템플릿 선택 후 Record
      2. Allocations 타임라인에서 메모리 사용 급증(Growth) 구간 식별
      3. Statistics 뷰로 전환 → 객체 타입별 할당 횟수 및 총 크기 확인
      4. Persistent Allocation 필터를 켜서 해제되지 않은 객체만 표시
      5. Responsible Library/Caller 컬럼을 활용해 어느 코드에서 할당이 발생했는지 파악
  4. Leaks Instrument로 실제 메모리 누수 찾기
    • 개요
      • 런타임 중 해제되지 않고 남아 있는 메모리 블록을 탐지
    • 주요 단계
      1. Leaks 템플릿 선택 후 Record
      2. Leaks 뷰에서 Detected Leaks 목록 확인
      3. Leak Stack Trace를 펼쳐서 누수가 일어난 함수 호출 경로 분석
      4. 관련 코드에 deinit, weak 참조, autoclosure 확인 등으로 누수 원인 수정
      5. 수정 후 재측정하여 Leaks가 사라졌는지 검증
  5. 추가 팁
    • trace 파일(.trace)을 저장해 버전별 비교 및 코드 변경 전·후 성능 차이 확인
    • Instruments Markers(⌘⌥Control M)로 이벤트 구간 표시하여 타임라인 분석 용이
    • 시뮬레이터뿐 아니라 실제 디바이스에서도 측정해 환경별 차이 파악
    • Instruments의 Allocations, Leaks, Time Profiler를 조합해 CPU·메모리 전반을 종합 분석

요약

  • Time Profiler는 CPU 병목, Allocations은 메모리 할당 패턴, Leaks는 누수 지점을 각각 집중적으로 분석할 때 유용하다.
  • Record → 재현 → 데이터 필터/뷰 전환 → 문제 지점 파악 → 코드 수정 → 재검증의 순환을 통해 안정적이고 최적화된 앱을 만들 수 있다.

0개의 댓글