자바 참조 종류 1

Strong Reference : 강한 참조

// GC 왈 : 객체야! 너를 사랑(강한 참조)해주는 사람(들)이 있느냐?
// 객체 왈 : 예! 저를 사랑해주는 사람(들)이 있습니다.
// GC 왈 : 그래 ? 너는 heap에서 더 놀거라.

객체의 직접 화법: 저를 참조해주는 변수 중에 강한 참조가(들이) 있습니다.

Soft Reference : 소프트 참조

// GC 왈: 객체야! 너를 사랑(강한 참조)해주는 사람은 없고, 그럼 너를 좋아해주는 ( 썸 - 소프트 참조) 사람(들)은 있느냐?
// 객체 왈: 예! 저를 좋아해주는 사람(들)이 있습니다.
// GC 왈: 내가 청소하고도 공간이 부족하다면 너도 쓰레기통에 넣어버리겠다. 
//     하지만 청소 후에 충분한 공간이 나온다면 너는 heap에서 더 놀거라.

객체의 직접 화법: 저를 참조하는 변수 중에는 강한 참조는 없고 소프트 참조(들)은 있습니다.

Weak Reference : 약한 참조

// GC 왈: 객체야! 너를 사랑해주는 사람도 없고, 너를 좋아해주는 사람도 없다는 거냐?
// 객체 왈: 예! 없습니다. 하지만 저는 친구(약한 참조)가(들이) 있습니다.
// GC 왈: 친구 필요없다. 내가 청소할 때 넌 그냥 쓰레기통에 들어가거라.

객체의 직접 화법: 저를 참조하는 변수 중에는 강한 참조도 없고, 소프트 참조도 없고, 약한 참조가(들이) 있습니다.

Phantom Reference : 유령 참조

// GC 왈: 좀 있다 heap 청소나 해야 겠다.
// 객체 왈: 사랑해 주는 사람도, 좋아해주는 사람도, 친구도 없고 웬수(들) 뿐이구나...
//      에휴, GC 온다는 핑계로 그 전에 내가 쓰레기통으로 자진해서 들어가리라.  

객체의 직접 화법: 나를 참조하는 변수 중에는 강한 참조도, 소프트 참조도, 약한 참조도 없고 유령 참조뿐이니 GC 오기 전에 그냥 자진 납세해야 했다.

출처: https://expert0226.tistory.com/341