메모리 사용량 측정 - 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 사용량 급증

image

이미지 가로 * 세로(해상도) * 4 → 메모리

  1. 이미지 리사이징 (확대, 축소), 다운샘플링 (축소) 메모리 사용량을 줄이기 위한 방식이기에 다운샘플링이 좀 더 적합한 개념이라고 판단.

  2. 이미지 크기 제한? 이미지 용량 제한? 이미지 파일이 디코딩 되기 전에 다운 샘플링 코드 적용해야 함. 다운샘플링 사이즈 기준: UIImage 동일 크기? 아님 살짝 더 크게? → 너무 작게하면 화질 문제가 발생한다. 썸네일(메이트목록)의 경우는 크기가 작아 화질 문제 걱정은 없지만, 본인 프로필이나 프로필드랍시 보여지는 이미지는 1.5배정도 해주는것이 적합할 것 같다.

  3. 다운샘플링을 많이 수행할 경우 CPU 사용량 문제 → prefetching(디코딩), background(디코딩, 다운샘플링) 단계에서 디코딩/다운 샘플링을 수행하면 됨 → Thread explosion 문제 생김 (context switching 빈도 높기 때문) → Serial Queue 이용해야 한다.,.

메이트 목록에 사용되는 프로필 이미지의 경우

  1. ImageIO를 이용해 썸네일 형태로 줄여 아예 따로 저장(원본과 분리된 Thumbnail 폴더를 Storage에 만들어 활용) 완전히 메이트 목록의 이미지뷰 크기에 맞춰 확 줄여도 워낙 작은 이미지라 해상도 문제가 크지 않을 것으로 보인다.

  2. 하지만, 메이트 목록에 존재하는 데이터의 개수가 100개, 500개(그럴일은 없지만,,) 넘어간다면? → 자연스럽게 메모리 사용량이 많아질 수밖에 없다. → 페이징 이용해 메모리 사용량 줄일 수 있다. → 가장 하단에 도달하면, 인식해 데이터 추가 요청하고 받아오기 (or 더보기?)