Java & Spring/자바

자바 참조 유형 (Strong, Soft, Weak, Phantom Reference)

Zin0_0 2021. 2. 28. 22:54
반응형

자바 참조 유형

 

  • 강한 참조(Strong Reference)

    • 일반적으로 new를 통해서 객체를 생성하게 되면 생기게 되는 참조.

    • 강한 참조를 통해 참조되고 있는 객체는 가비지 컬렉션의 대상에서 제외된다.

  • 소프트 참조(Soft Reference)

    • java.lang.ref.SoftReference

    • 객체를 참조하는 경우가 SoftReference 객체만 존재하면, GC의 대상이 됨

    • 일반적으로는 메모리 여유에 따라 GC의 대상 여부가 결정

    • 메모리 여유가 충분하면 GC가 수행되더라도 수거되지 않는다.

    • JVM의 메모리가 부족하다면(Out Of Memory에 가깝다면) 힙 영역에서 제거된다.

  • 약한 참조(Weak Reference)

    • java.lang.ref.WeakReference

    • GC가 발생하면 무조건 수거됨

    • GC의 실행주기와 수거 시점이 일치하며, 짧은 주기에 자주 사용되는 객체를 캐시할 때 유용

  • 팬텀 참조(Phantom Reference)

    • java.lang.ref.PhantomReference

    • 생성자에서 무조건 ReferenceQueue를 받음

    • GC가 실행되기 이전(finalize() 호출 후) PhantomReference는 객체 내부 참조를 phantomly reachable 객체로 만든 후, queue에 입력됨

 

Reference

lion-king.tistory.com/entry/Java-%EC%B0%B8%EC%A1%B0-%EC%9C%A0%ED%98%95-Strong-Reference-Soft-Reference-Weak-Reference-Phantom-References

ktko.tistory.com/entry/%EC%9E%90%EB%B0%94-%EA%B0%95%ED%95%9C%EC%B0%B8%EC%A1%B0Strong-Reference%EC%99%80-%EC%95%BD%ED%95%9C%EC%B0%B8%EC%A1%B0Weak-Reference

 

반응형