Java GC (Garbage Collection)
- GC :
- GC는 Heap memory에 상주하는 인스턴스중에 Reference counter = 0 인 것을 메모리에서 제거하는 행위.
- GC가 종료될때까지 모든 서비스 스레드가 정지
- Reference counter = 0인 인스턴스가 곧바로 메모리에서 삭제되는 것은 아니며, GC가 동작하면 삭제됨.
- 동작
- 모든 인스턴스는 최초 Eden영역에 존재
- GC에 의해서 제거되지 않은, 즉 Reference counter > 0 인 인스턴스는 Young(Eden, Survivor)를 거쳐 Old(Tenured)로 이동
- Minor GC
- Eden이 Full일 경우에 발생
- Young 영역에 Counter가 0인 모든 인스턴스 제거
- Eden 영역에 Counter가 0보다 큰 인스턴스는 Survivor로 이동
- Major GC
- Young(Eden+Survivor)이 Full일 경우 발생함
- Old영역의 Counter가 0인 인스턴스 모두 제거
- Survivor영역의 Counter가 0보다 큰 인스턴스를 Old영역으로 이동
- GC와 Heap 크기의 역학관계?
- Heap의 크기가 커질지면
- 처리량 증가(Full GC가 덜 발생함)
- But, Pause time도 따라서 증가(Full GC 수행시 시간이 길어짐)
'감리사 > 소프트웨어공학' 카테고리의 다른 글
[SE] 테스트 커버리지 (0) | 2018.07.17 |
---|---|
[SE] 테스트 용어(종류) (0) | 2018.07.13 |
[SE] Java - J2ME (0) | 2018.07.11 |
[SE] XML - 작성 규칙 (0) | 2018.07.11 |
[SE] 객체지향 개발 5대 원칙 (SOLID) (0) | 2018.07.10 |