본문 바로가기

Android/Samples & Tips

[Android-Tip] Reference(레퍼런스)란?



Android에서 자주 사용하는 Reference에는 3가지가 있습니다. 간단하게나마 정리해둡니다.

1. 일반 자바레퍼런스(Strong)
- 어딘가에서 참조 중이면 계속 존재
- 이런 객체가 많아지면 메모리 누수


2. WeakReference(Weak)
- 자바 레퍼런스에 한가지 예외를 둠.
- WeakReference만 참조하고 있는 객체는 가비지 컬렉션 발생시 메모리 해제 됨.


3. SoftReference(Soft)
- WeakReference 보다 약간 강한 레퍼런스.
- OutOfMemoryError 가 발생하기 전까지는 메모리에 존재.
- WeakReference 처럼, SoftReference만 참조하고 있는 객체는 OutOfMemoryError 발생시까지 메모리 존재.
- OutOfMemoryError 가 발생하면, SoftReference로 참조하는 오브젝트들이 먼저 GC에 수집됨.
   대신, try{}catch(OutOfMemoryError e){} 로 감싸주어 처리해야함.