인프런 커뮤니티 질문&답변

Kedric Kim님의 프로필 이미지
Kedric Kim

작성한 질문수

[코드팩토리] [입문] Dart 언어 4시간만에 완전정복

CachedNetworkImage 로 인한 memory leak 문제..

작성

·

811

0

안녕하세요 코드팩토리님!

선생님의 dart강의를 듣고

flutter로 혼자 사이드 프로젝트를 진행하고 있는 중에 질문이 있어 이렇게 글을 남깁니다.

다만 무료 dart 강의만 듣고 flutter 질문을 드리는 것이 죄송하네요..ㅜㅜ

 

우여곡절끝에 제가 생각하던 앱을 비슷하게나마 완성을 했는데요.

아기 사진을 가족들과 공유할수 있는 사진앨범 앱을 만들었습니다.

 

기본적으로 firebase를 연동하여 데이터를 받아와서,

gridview 이미지들을 보여주고있습니다.

스크롤 시, 추가적으로 데이터들을 받아와서 이미지들을 보여주게 되는데요

여기서 이미지들이 다 불러와지지 않은 상태에서

빠르게 스크롤을 하면 앱이 꺼져버리는 문제가 생겼습니다.

 

구글링 및 디버깅을 해보니 memory leak으로 앱이 꺼지는 것 같은데

Image.network를 CachedNetworkImage로 바꿔도 보고

setState를 남발해서 그런가 싶어서

코드팩토리님 유튜브의 'provider로 sns 스타일 infinite scroll 구현하기!' 를 참고하여

provider로 상태관리를 하도록 바꿔도 보고

const를 선언할수 있는 부분은 선언하고

최대한 build를 호출 안하게끔, build에 복잡한 로직이 안들어가게끔 수정하였는데요.

그럼에도 불구하고 이 문제는 고쳐지지가 않더라구요 ㅜㅜ

 

불러오는 이미지 url을 CachedNetworkImage로 보여주지 않고

그냥 Text로 보여주면 해당 문제가 안나오는걸로 봐선

뭔가 이미지 관련해서 문제가 있는것 같긴한데

어떻게 해결해야하는지 감이 잡히지도 않고, 답답한 심정입니다 ㅜㅜ

괜찮으시다면 방법을 제시해주실수 있을까 싶어 질문남깁니다.

감사합니다!

답변 2

1

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

모든 캐싱 기법은 결국 메모리에 기억을 하는 방법으로 액세스 효율을 높힙니다.

만약에 메모리를 너무 많이 사용하게되면 속도가 느려지거나 문제가 생길 수 있는게 어찌보면 당연합니다.

감사합니다!

Kedric Kim님의 프로필 이미지
Kedric Kim
질문자

답변달아주셔서 감사합니다 !

1

Kedric Kim님의 프로필 이미지
Kedric Kim
질문자

자체 해결하여 남깁니다 !
CachedNetworkImage의 memCacheHeight를 grid 크기에 맞게 선언하여 해결하였습니다

감사합니다

Kedric Kim님의 프로필 이미지
Kedric Kim

작성한 질문수

질문하기