iOS 개발/Unsplash 클론 코딩

Unsplash - 16. 메모리 누수 확인 (진행중)

Skillist 2022. 2. 9. 23:47
반응형

안녕하세요 Skillist입니다.

 

물 들어올때 노 저으라는 말이 있듯이,

진행한 프로젝트에 대한 성능체크, 메모리 누수 확인을 하고 있어요.

왜냐면 메모리 누수 확인 공부를 하고 있거든요.

 

기회가 된다면 "나를 돌아봐" 프로그램의 "박명수 - 이경규" 케미 보세요.

정말 꿀잼입니다. 너~~~무 재미있는데 왜 안떴는지 모르겠어요.

번외로 2006년 3월 11일에 방영된 "무한도전"의 "이경규 - 비난특집"도 추천합니다.ㅋㅋㅋㅋㅋㅋ

아이 오브 살쾡이

 

본론으로 돌아와서 "Unsplash" 프로젝트에 대한 메모리 누수를 확인해볼게요.

 

정성스럽게 글 작성완료했는데;;;;;;;;;;;;;;

내용 다 날라가버렸네요 ㅠㅜㅜㅠㅠㅠㅠㅠ 다시 작성해봅니다

 

———————————————————————————————————————————————————

 

instruments의 leaks 도구를 사용했습니다.

 

빨간색 X 아이콘 보이죠??

중간중간에 메모리 릭 발생 했어요.

 

Responsible Frame을 보면 JsonString이 많네요.

 

우측의 StackTrace를 볼까요?

역시 newJsonString, Value, Object등 내용이 있고,

JsonDecoder.decode도 보이고

SearchMainViewController.fetchDiscover()도 보여요.

바로 아래는 escaping 클로저도 보이구요.

 

그럼 문제가 되는 코드를 볼께요.

300라인에 weak self를 사용했고, 315라인에 JsonDecoder().decode도 보여요.

 

관련된 코드입니다. escaping이 보이죠.

관련 코드에서 문제가 있어보이는데, 어떤 문젠지 잘 모르겠네요;;;;;;;;

 

———————————————————————————————————————————————————

 

이번엔, 빌드 메모리 그래프로 확인해봤어요.

NSCFString이 보이네요.

 

메모리 릭은 이렇게 보라색 느낌표 아이콘으로 표시됩니다.

CFString을 표시하고 있어서 어디서 발생하는지 잘 모르겠어요.

 

———————————————————————————————————————————————————

 

구글링을 해보니, JSONDecoder 자체 버그라 오픈소스 사용하라는 말도 있고, 답변 없이 질문만 있는 글이 많네요.

해결방법은 아직 못찾았습니다. 확인되면 내용 업데이트 하겠습니다.

 

잘못되거나 부족한 내용 등, 피드백 감사합니다!

 

Skillist의 Unsplash 프로젝트

https://github.com/DeveloperSkillist/UnsplashCloneCode

 

GitHub - DeveloperSkillist/UnsplashCloneCode: UnsplashCloneCode

UnsplashCloneCode. Contribute to DeveloperSkillist/UnsplashCloneCode development by creating an account on GitHub.

github.com

 

반응형