개발/Android

[Android] Context에 의한 Memory Leak

Dev Aaron 2020. 11. 8. 22:07
반응형

Android 앱 개발을 하게 되면 Context는 뭐라고 설명하긴 어렵지만 굉장히 자주 필요로 하게 되는 객체입니다.

이를 테면 getString() 을 통해 다국어 정보를 가져오거나,
getResources() 등을 통해 리소스 정보를 얻어오기 위해도 사용합니다.

adapter나 여러 이유로 만들게 되는 singleton 객체 혹은 기타 다른 여러 객체에 context를 전달하여 쓰는 케이스가 종종 있습니다.

context는 자주 쓰이지만, 그만큼 사용 시 주의해야 하는 부분도 있습니다.
잘못 사용하게 되면 Activity를 종료하더라도 해당 context를 갖고 여전히 살아있는 다른 객체 때문에 GC에 의해 정리되지 않고 여전히 메모리 속에 떠돌고 있을 수 있습니다.

이에 대한 간단한 팁으로

  1. adapter, singleton, 등 기타 객체에 context를 전달하지 않는 구조를 설계하세요.
  2. 만약 context가 반드시 필요하다면 Activity가 아닌 ApplicationContext를 전달하도록 하세요. 이렇게 할 경우 Activity가 종료되면 GC 대상이 되어 Memory leak을 방지할 수 있게 됩니다.
반응형