티스토리 뷰
PHImageManager로 PHAsset을 이미지로 변환할 때 requestImage를 사용합니다.
이 때 targetSize가 필요한데, targetSize에 따라 메모리 사용량이 크게달라집니다.
참고 https://baechukim.tistory.com/127
WWDC에서도 소개되었는데 파일의 크기가 아닌 이미지의 pixel 크기가 메모리에 영향을 주게됩니다.
그래서 targetSize를 줄이면 메모리 사용량을 개선할 수 있습니다.
(하지만 완전히 requestImage는 pixel크기에만 의존하진 않는 것 같습니다. 아래에 내용 추가)
asset의 pixel사이즈의 width 혹은 height가 windowWidth의 5배를 넘는다면 windowWidth의 5배크기로 줄여서 테스트했습니다.
테스트 기기는 xs / iOS15 가로 375px입니다.
예시
0. 이미지 피커에서 평상시 메모리
1. 파일크기 1mb / 3024 * 4032 이미지
최고 메모리사용 155.5MB -> 113.3MB
2. 파일크기 61mb / 23123 * 5093 이미지
최고 메모리사용 1.8GB -> 102MB
3. 파일크기 61mb / 23123 * 5093 이미지
최고 메모리사용 297.2MB -> 134.5MB
이미지관련 작업을 할 때 항상 targetSize에 대해서 고민하고 개발해야겠습니다.
내용추가
똑같은 pixelSize의 png 이미지를 23MB 40MB로 만들고 테스트하면
40MB는 메모리 부족으로 앱이 종료되는데 23MB는 메모리를 덜 사용했습니다.
requestImage에서는 완전히 pixel사이즈에만 영향을 받는 것 같진 않습니다.
'iOS' 카테고리의 다른 글
[iOS] AVPlayer 공식문서 (0) | 2022.07.20 |
---|---|
[iOS] 라이브러리 - Static/Dynamic Library (0) | 2022.06.08 |
[iOS] Images 이미지 메모리 관련 (0) | 2022.04.19 |
[iOS] 의도하지 않은 애니메이션이 나타날때, layoutIfNeeded() (0) | 2022.04.01 |
[iOS] The View Drawing Cycle: 뷰 그리기 사이클 (0) | 2022.04.01 |
댓글
공지사항