Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- uiscrollview
- HIG
- SWIFT
- UITextView
- clean architecture
- 리펙토링
- UICollectionView
- collectionview
- ios
- swift documentation
- Xcode
- MVVM
- 클린 코드
- combine
- 애니메이션
- Observable
- Protocol
- RxCocoa
- 스위프트
- map
- Human interface guide
- tableView
- 리팩토링
- ribs
- swiftUI
- Clean Code
- Refactoring
- rxswift
- uitableview
- 리펙터링
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] 2. 메모리 프로파일링 - VM Tracker을 사용하여 메모리 프로파일링하기 (resident size, dirty size, swapped size, virtual size 본문
iOS 응용 (swift)
[iOS - swift] 2. 메모리 프로파일링 - VM Tracker을 사용하여 메모리 프로파일링하기 (resident size, dirty size, swapped size, virtual size
jake-kim 2023. 12. 31. 01:471. 메모리 프로파일링 - VM Tracker 사용 방법 (#Instrument)
2. 메모리 프로파일링 - VM Tracker을 사용하여 메모리 프로파일링하기 (resident size, dirty size, swapped size, virtual size)
VM Tracker에서 메모리 살펴보기
- resident, dirty, swapped, virutal을 확인하여 메모리 상태 확인이 가능
- resident size: 실제로 RAM에 올라와서 현재 사용되고 있는 데이터의 크기
- dirty size: RAM에 올라온 것 중에 데이터의 변경이 일어나서, page out될 수 없는 페이지의 크기
- swapped: RAM <-> disk 페이지 변경된 크기
(자세한 residen size, dirty size, swapped size, virtual size에 관한 내용은 이전 포스팅, iOS 메모리 기초 개념 글 참고)
분석 방향
- 보통 이미지 관련 이슈이므로 이미지 관련 코드를 메모리를 보고 역추적하기 (역추적은 이전 포스팅 글 참고)
- dirty size가 핵심이기 때문에 이에 관해 파악하고 해결하는게 필요
- resident size가 큰 경우 -> 현재 메모리 최적화가 안되고 있다는 정도로만 파악
- dirty size가 큰 경우 -> 데이터를 다룰 때 불필요한 수정을 최소로하도록 수정하거나 대용량 데이터를 다룰 땐 캐싱을 사용하도록 수정이 필요
- swapped가 큰 경우 -> 현재 RAM에 데이터가 없을 때 disk와 페이징을 swap하는 것이므로 이 값이 커지게 되면 메모리 최적화가 더욱 필요하다고 판단
ex) VM Tracker화면에서 Dirty 부분이 78%로 큰 퍼센트를 차지하고 있는데 이 중에서도 MALLOC_SMALL와 MALLOC_LARGE가 크다는 것을 확인 가능
- MALLOC_SMALL가 큰 경우?
- 작은 크기의 메모리 할당이 많이 이루어지고 있다는 것
- 작은 크기의 객체를 할당할 때마다 메모리를 따로 할당하는 것이 아니라, 메모리 풀을 사용하여 여러 객체를 한 번에 할당하고 재활용하는 방향 (NSCache사용)
- MALLOC_LARGE가 큰 경우?
- 대규모 객체 또는 큰 메모리 블록이 할당되고 있다는 것
- 배열보단 Linked List 자료구조로 변경할 것
'iOS 응용 (swift)' 카테고리의 다른 글
Comments