안드로이드 개발을 하면서 이미지를 가져와봤으면 Glide를 당연히 사용해봤을 겁니다.
glide를 사용하면 이미지 캐싱 어쩌고 나와 있는데, 그러면 비트맵 이미지 캐싱은 어떻게 하는가 하는 의문이 들어서 찾아보니
LruCache라는 것이 있네요.
제가 직접 비트맵 이미지 코드를 짜기 귀찮으니 구글에서 찾아봤습니다.
캐싱을 공부하던 도중에, 메모리에 다 올려버려도 될까? 라는 생각이 드는 와중에
코드 중간에 조금 특이한 부분이 cacheSize라고 지정해주는 부분이 있습니다.
maxMemory/8 만큼 메모리를 할당한다는 것인데 저렇게 하면 되나? 라는 생각이 들어서 찾아보니
모든 애플리케이션에 적합한 특정 크기나 수식은 없으며 사용량을 분석하여 적합한 해결책을 찾아야 합니다. 캐시가 너무 작으면 아무런 이점 없이 추가 오버헤드가 발생하고 캐시가 너무 크면 또다시 java.lang.OutOfMemory 예외가 발생하여 앱의 나머지 부분에 사용할 메모리가 거의 남아 있지 않을 수 있습니다.
구글에서는 위와 같이 설명하고 있습니다.
그냥 요령껏 알아서 잘 해라 라고 나와있네요
그러면 메모리가 아닌, 디스크 캐시도 사용할 수 있을까 해서 찾아보면 DiskLruCache라는 것도 있습니다.
위와 같이 디스크캐시 사용해줄 수 있습니다.
끝.
https://www.charlezz.com/?p=44551
https://developer.android.com/topic/performance/graphics/cache-bitmap?hl=ko
'Android(Kotlin)' 카테고리의 다른 글
setvalue postvalue 차이 (0) | 2021.10.08 |
---|---|
코루틴과 쓰레드의 차이 (0) | 2021.10.07 |
Simple ViewPager (0) | 2021.10.01 |
Android thread, Handler, Looper (0) | 2021.09.14 |
Shared Preferences (0) | 2021.09.10 |