공부
[JAVA]참조 유형의 4단계 / [운영체제] Locality of Reference
Lucy Loop
2024. 6. 19. 20:39
4 levels of object references
Strong Soft Weak Phantom
<--- 강함 약함 --->
GC x GC o
아래로 갈 수록 참조가 약한 것으로,
GC의 대상이 되기 쉽다
↑ 참조의 강도가 높음
- 강한 참조 Stong Reference
- 기본
- GC되지 않음
- GC 원한다면 명시적 null 표시 필요
- 약한 참조 Soft Reference
- 메모리 부족 시 GC의 대상
- 참조 지역성의 원리를 활용하기 위해 주로 cache에 사용됨. cache의 성능을 개선하며 메모리 누수 방지가 가능
- Weak reference
- 해당 객체를 참조하는 strong ref.가 없는 경우 바로 GC의 대상
- 캐시에 사용!
- 여유 있어도 즉시 수거될 가능성이 높다
- Phantom Reference
-
- 객체의 finalize() 메소드 호출된 직후 GC가 수거
- 보통 Native 객체나 Direct Memory와 같이 JVM에서 관리되지 않는 자원들을 해제하기 위해 사용됨
- 객체가 참조되지 않음
- 객체 수거시에도 참조가 남아 있음
- finalize()호출된 직후 Phantom Reference가 ReferenceQueue에 등록됩니다 -> finalize()호출됨 알 수 있음
↓ GC의 대상이 되기 쉽다
참고
https://liltdevs.tistory.com/182
[운영체제] Locality of Reference
캐시 메모리
- 주기억장치와 메모리 속도 차이를 극복 (병목현상 줄임)
- 효율 높이기 위해서는 캐시 적중률(hit-rate)높여야
참조의 지역성
- 캐시 적중률Hit-rate을 높이는 원리
- 프로그램이 일정 기간 동안 특정 메모리 위치 집합에 접근하는 경향이 있는 현상
- 주소가 서로 가까운 명령어에 접근하는 경항
- 공간적 (위치 근접) / 시간적 (최근 참조)
- 예시: 배열 곱셈에서 루프 순서인 j와 k를 바꾸는 것만으로도 속도가 증가한다 <— 조금 어려움 나중에 다시 보자