메모리 캐싱은 왜 필요할까?
우선 Caching은 메모리 내에서 자주 액세스하는 데이터를 관리하는 데 사용되는 기술이다.
캐싱을 하면 더 빠른 로드 시간과 네트워크 대기 시간 감소 등 사용자 경험을 향상 시킨다.
서버에서 가져와야 하는 데이터를 줄어 들면서 요금 절감 혹은 네트워크 환경이 좋지 못한 사용자에게 도움된다.
메모리 캐싱 기법의 개념과 iOS에서의 구현 방법
Cache Hit는 캐시에서 데이터를 읽는 방식으로 제공된다. Cache miss 경우에는 데이터를 가져와 캐시에 저장한다.
- Cache Hit: 요청된 데이터를 캐시에서 찾을 수 있을 때 발생
- Cache Miss: 캐시에서 찾을 수 없을 때 발생
캐시를 지우는 데에도 전략이 존재한다.
- LRU: 가장 오랫동안 사용되지 않은 데이터를 캐시에서 삭제
- LFU: 사용 빈도가 가장 낮은 데이터를 데이터를 캐시에서 삭제
- FIFO: 먼저 들어온 데이터를 먼저 삭제
문서에서는 이미지를 비동기적으로 저장하고 가져와서 앱의 응답을 높이고 있다.
예제 코드에서는 URL에서 이미지를 로드하고 NSCache를 사용하여 다운로드한 이미지를 캐싱하는 메커니즘을 보여준다.
NSCache는 key-value 쌍을 임시로 저장하는데 사용하는 컬렉션이다.
일반적으로 NSCache 객체를 사용하여 생성 비용이 많이 드는 일시적인 데이터가 있는 객체를 임시로 저장한다.
여기서 일시적인 데이터는 메모리가 부족한 경우 삭제될 수 있기에 프로그램에 중요하지 않아야 한다.
삭제되면 필요할 때 해당 값을 다시 계산해야 한다.
NSCache는 캐시를 지우는 정책으로 NSDiscardableContent 프로토콜이 채택된다.
ARC와 비슷하게 count 값에 따라 달라진다. 메모리를 읽는 중이거나 필요한 경우 count는 1보다 크거나 같으며, 사용되지 않고 폐기될 수 있는 경우 변수는 0이 된다.
대용량 데이터 처리 시 메모리 최적화 방안
lazy Loading를 사용하여 데이터를 필요할 때만 메모리에 로드하고 사용되지 않으면 해제한다.
메모리 사용량을 줄이기 위해 이미지를 적절한 품질로 압축하거나 이미지의 크기를 줄여서 표현할 수 있다.
영상의 경우에도 비슷하게 저해상도부터 보여주기 시작하면서 점진적으로 필요한 데이터를 로드하는 방식으로 해결할 수 있다.
'Life style > TIL' 카테고리의 다른 글
iOS에서 자동 참조 카운팅(ARC)과 가비지 컬렉션(Garbage Collection)의 차이점 (0) | 2024.05.31 |
---|---|
데이터베이스의 종류와 iOS에서 주로 사용되는 데이터베이스 (0) | 2024.05.19 |
가상 메모리의 개념과 동작 원리 (0) | 2024.05.13 |
렌더링 속도의 향상을 위한 MIP maps: 밉맵 (0) | 2024.05.13 |
암호화와 보안의 기본 개념과 iOS 앱 보안을 위한 방안 (0) | 2024.05.09 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!