[Android 에러방지법] (2) 배우면 더쉬운 메모리누수 찾기 LeakCanary

0

Android 에러방지법

목록 보기
2/3

오랜만입니다! 요즘 Side Project 진행하랴~ 엘든링 진행하랴~ 면접합격의 기다림 때문에 지치기도 하였구요.
매일 꼬박을 기다리다가 만약 불합격됐을경우, 기다렸던 매일을 헛되이 쓴것에 후회할것 같아서 앞으로 더 열심히 코딩을 하고자 다짐했습니다.
앞으로 같이 열심히 달려나가요!


오늘 할 얘기는 메모리 누수


안드로이드는 JVM과 비슷한(ART)것을 사용하는 만큼, GC(Garbage Collection) 또한 포함됩니다.
GC가 포함되었다는것은 명시적으로 메모리 관리를 할 필요가 없다는것 입니다.

GC란?

프로그램을 개발하다 보면, 현재 쓰이지 않는 데이터가 메모리에 적재됩니다.
이때 이것을 가바지(Garbage)라고 하며, JVM의 가비지 컬렉터가 알아서 불필요한 메모리를 정리해 줍니다.
하지만 개발자 입장에서는 언제 가바지 컬렉터가 수거해 갔는지 알방법이 대체로 없기때문에 장점이자 단점이기도 합니다.
자바 메모리 관리

하지만 메모리 참조가 잘못되었을때, GC가 해제를 못하여 계속 메모리에 쌓여있는것을 우리는 메모리 누수(Memory Leak)라고 합니다.
한두개면 괜찮겠지만 안드로이드는 메모리가 한정되어 있기 때문에, 조금이라도 거대한 메모리가 탑재될경우 OOM(Out Of Memory)이 일어나 앱이 죽을수도 있습니다.
그렇다면 메모리 누수가 어떻게 일어날까요?

이렇게 하면 메모리 누수가 일어난다 카더라 😡😡

메모리누수를 만드는 8가지로 들어가면 매우 자세하게 나와있다.

이후 계속..

1. Viewmodel에서 Activity 참조

ViewModel은 특정 Activity보다 수명이 길수도 있기때문에 Activity Context를 참조하면 안된다

profile
쉽게 가르칠수 있도록 노력하자

0개의 댓글