INDEX
Before
- Java Process 동작 중, JVM내 GC Schedule이 실행됨
What is GC(Garbage Collection)?
- Application 동작 중에 Unreachable Object를 Memory상에서 제거하여 효율적인 Memory 관리를 가능케 하는것
- Garbage Collector 더이상 필요하지 않은 Object 찾아 삭제하는 작업
- Heap Memory 내 Old area 이 가득 차게 되면 GC가 발생
stop-the-world
→ Application 동작 중 JVM 내 GC Thread 를 제외한 나머지 Thread 를 모두 All STOP 하는 것 (Application이 STOP)
GC Flow
- weak generational hypothesis 에서 고안됨 (HotSpot VM)
- 대부분의 Object 는 사용 직후 Unreachable
- Old Object에서 Young Object의 Reference 는 희박
- Young area
- 새롭게 생성한 Object 가 적재
- 대부분의 Object 가 Young area 에 생성 후 금방 삭제 됨 (Minor GC)
- Old area
-
Unreachable 되지 않아 Young area에 남아 있는 Object가 복사되는 공간
-
보통 Young area보다 크게 할당
→ GC 발생 빈도가 적음
-
가득 차는 경우 GC 발생 (Major GC := Full GC)
- Old area 내 Object 에서 Young area 내 Object를 참고하는 경우
Heap Area Image