참조의 종류
참조의 종류
참조의 종류
- 참조에는 다음과 같은 여러 종류가 존재함
Strong References
Item item = new Item();
- 위와 같은 new 를 통해 객체를 생성한 경우 생기는 일반적인 참조
- 어떤 객체가 강한 참조를 통해 도달할 수 있다면, 해당 객체는 GC의 대상이 아님
- 참조가 해제되는 경우에만 GC의 대상이 됨
- 메모리 누수의 원인이 될 수 있음
Weak References
WeakReference weakItem = new WeakReference(item);
- 위와 같이
WeakReference
를 통해 생성한 참조 weakItem.get()
을 통해 객체를 가져올 수 있음- GC 발생하면, 약한 참조만 있는 객체는 수거됨
- 짧은 기간동안만 필요한 객체를 사용할 때 유용
- 캐시 등의 key-value 자료 구조가 필요하면
WeakHashMap
을 이용하면 됨- 이 경우 key가 GC에 의해 수거되면, 해당 key에 해당하는 value 역시 수거됨
Soft References
- Weak reference와 비슷하지만, GC가 객체를 덜 수거하는 참조
- 만약 메모리가 충분하다면, GC가 객체를 수거하지 않음
- Weak reference보다 더 캐시에 적합
References
- https://recordsoflife.tistory.com/1274
- https://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
- https://bepoz-study-diary.tistory.com/340
- https://velog.io/@injoon2019/%EC%9E%90%EB%B0%94-%EC%B0%B8%EC%A1%B0%EC%9D%98-%EC%A2%85%EB%A5%98