본문 바로가기

나의 플랫폼/안드로이드

[Java] WeakReference, SoftReferernce, StrongReference

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

제가 생각 하는 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가 쓰레기 취급을 하게 된다.


아마 위 내용은 제가 여러 글을 읽으면서 느꼈던 부분을 그대로 작성한 것입니다.

잘못된 부분이나 추가사항이 있으시면 언제든지 댓글 부탁드려요.

감사합니다.



##참조

http://dlucky.tistory.com/216

http://itmining.tistory.com/10

http://aroundck.tistory.com/477