메모리 사용량 측정 - Team-HGD/SniffMEET GitHub Wiki
평균 메모리
기본적으로 100 - 200 mb 정도를 사용하면 적당한 것 같다.
시뮬 테스트
측정값 - iPhone 16(18.3) 시뮬레이터 기준, 런치스크린 - 8.19mb 온보딩(이미지) - 15mb 정보입력 - 22mb 프로필사진등록 - 25mb 등록 - 29mb 홈화면 - 유지 메이트목록 1개 - 34mb 메이트목록 20개 - 127mb 여기서 1개 추가시 - 133mb 평균적으로 170 mb 사용
프로필 이미지 크기 제한 필요
프로필 이미지 로드마다 memory 사용량 급증
이미지 가로 * 세로(해상도) * 4 → 메모리
-
이미지 리사이징 (확대, 축소), 다운샘플링 (축소) 메모리 사용량을 줄이기 위한 방식이기에 다운샘플링이 좀 더 적합한 개념이라고 판단.
-
이미지 크기 제한? 이미지 용량 제한? 이미지 파일이 디코딩 되기 전에 다운 샘플링 코드 적용해야 함. 다운샘플링 사이즈 기준: UIImage 동일 크기? 아님 살짝 더 크게? → 너무 작게하면 화질 문제가 발생한다. 썸네일(메이트목록)의 경우는 크기가 작아 화질 문제 걱정은 없지만, 본인 프로필이나 프로필드랍시 보여지는 이미지는 1.5배정도 해주는것이 적합할 것 같다.
-
다운샘플링을 많이 수행할 경우 CPU 사용량 문제 → prefetching(디코딩), background(디코딩, 다운샘플링) 단계에서 디코딩/다운 샘플링을 수행하면 됨 → Thread explosion 문제 생김 (context switching 빈도 높기 때문) → Serial Queue 이용해야 한다.,.
메이트 목록에 사용되는 프로필 이미지의 경우
-
ImageIO를 이용해 썸네일 형태로 줄여 아예 따로 저장(원본과 분리된 Thumbnail 폴더를 Storage에 만들어 활용) 완전히 메이트 목록의 이미지뷰 크기에 맞춰 확 줄여도 워낙 작은 이미지라 해상도 문제가 크지 않을 것으로 보인다.
-
하지만, 메이트 목록에 존재하는 데이터의 개수가 100개, 500개(그럴일은 없지만,,) 넘어간다면? → 자연스럽게 메모리 사용량이 많아질 수밖에 없다. → 페이징 이용해 메모리 사용량 줄일 수 있다. → 가장 하단에 도달하면, 인식해 데이터 추가 요청하고 받아오기 (or 더보기?)