제가 생각 하는 WeakReference, SoftReference, StrongReference에 대해 공유 하고자 합니다.
GC가 메모리를 확보하게 위해 쓰레기 취급 하는 동급 형태
WeakReference > SoftReference > StrongReferece
1. WeakReference
- GC가 언제든지 쓰레기 취급 할 수 있는 Reference : 따라서 메모리 처리에 크게 신경 쓸 필요가 없다.
- new WeakReference(new Object()); 형태
2. SoftReference
- GC가 메모리가 부족(OutOfMemory 상태 가기 직전) 일 경우, 쓰레기 취급 해버리는 Reference
- new SoftReference(new Object()); 형태
3. StringReference
- GC가 처리 하지 않는 Reference : null 처리로 GC에 알려주는게 메모리 누수에 좋다.
- new Object(); 형태
4. 기타
- WeakReference에 StrongReference를 지정할 경우
: WeakReference weakRef = new WeakReference(new Object());
이렇게 생성 하고 나서 Object obj = weakRef.get(); 을 할 경우, obj는 StrongReference로 참조 된다.
그래서 obj가 null 이 될때까지 GC가 쓰레기 취급을 하지 않게 된다.
하지만, weakRef.get()하지 않을 경우에는 StrongReference가 아닌 WeakReference로 취급 되어
GC가 쓰레기 취급을 하게 된다.
아마 위 내용은 제가 여러 글을 읽으면서 느꼈던 부분을 그대로 작성한 것입니다.
잘못된 부분이나 추가사항이 있으시면 언제든지 댓글 부탁드려요.
감사합니다.
##참조
'나의 플랫폼 > 안드로이드' 카테고리의 다른 글
[Android] 구글플레이에 등록된 앱 버전 확인 (0) | 2017.04.14 |
---|---|
[Java] Wrapper Class (0) | 2017.03.29 |
[Firebase] Make sure to call FirebaseApp.initializeApp(Context) first (1) | 2017.03.16 |
[Kotlin] unresolved reference databinding (0) | 2017.02.15 |
[Kotlin] Kotlin을 사용하기 위한 기본 설정 (0) | 2017.02.14 |