일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Law of Demeter
- CSS
- Bandit Level 6
- 클린코드
- 변수명 짓는법
- was버그
- 시스템 파악
- avax.net.ssl.SSLHandshakeException:
- OpenAPI
- pl/sql
- plsql
- 나선형 모형
- java.sql.SQLRecoverableException
- mysql 튜닝
- 폭포수 모형
- 스크럼기법
- 디미터 법칙
- table scan
- was SQLRecoverableException
- 에자일 모형
- 시스템 파악 정리
- 프로토타입 모형
- Bandit Level 6 → Level 7
- vue
- Bandit Level 5
- springboot
- 명령어공부
- SQLRecoverableException
- 커맨드공부
- 인증서만료에러
- Today
- Total
개발햄비
[Java]GC(가비지 콜렉터)란? 본문
GC(가비지 콜렉터)란? garbage Collector
어떠한 객체가 만들어져 메모리의 한부분을 점유하게 되는데요 이 때,
특정 메소드 호출한 후 수행이 완료되어 해당 객체가 더이상 필요없는 객체가 남게 됩니다.
필요없는 객체가 남게 되면 쓰레기가 쌓여 처리속도에 영향을 미칠 수 있습니다.
이것을 정리하는 것이 바로 garbage Collector GC 라고합니다.
가비지 콜렉터의 구조는 다음과 같습니다
Java 메모리 구조는 heap, perm, Thread로 나뉘고 heap은 Young과 old로 나뉘게 됩니다.
Young : new를 통해 생성된 인스턴스를 Eden영역에 저장합니다.
Old : Young영역에 존재하던 객체들이 계속 사용되거나 , 생존, 오래되어 저장되는 영역입니다.
Perm영역은 class 또는 Method 코드가 저장되는 영역입니다.
Garbege Collection의 종류
§ Minor GC
자바의 GC는 크게 두 가지로 Minor GC와 Full GC로 나눌수 있습니다. 그 중 Minor GC는 Young영역에 발생하는 GC를 나타냅니다. 동작방식은 아래와 같습니다.
1) 처음 Minor GC가 발생하기 전 할당되어있는 모든 객체들은 Eden영역에만 존재하게됩니다. 이때 Minor GC가 발생하면 Eden영역 중 활성객체가 Survivor1영역으로이동됩니다. 이 후 비활성 객체만 남은 Eden영역이 클리어됩니다.
2) 다음 Minor GC가 발생하면 처음 Minor GC이후 생성된 객체들이 존재하는Eden영역과 처음 Minor GC이후 생존한 객체들이 저장된 Survivor1의 영역에서존재하는 활성객체들이 Survivor2로 이동되고 Eden영역과 Survivor1영역이 클리어됩니다.
3) 이 후 위 작업이 Survivor1과 Survivor2를 번갈아가면서 계속 수행되고 계속해서활성객체로 생존하는 객체들은 시간이 지남에 따라 Old영역으로 이동됩니다.
§ Full GC
위에서 Minor GC란 Young영역의 GC라고 하였습니다.
이와 상응되게 Full GC는Old영역에 발생하는 GC를 나타냅니다.
FullGC는 특정 순서가 있는 작업을 수행한다기보다 Old영역을 스캔하여 객체들의 참조상태를 표시하고
참조되지 않는 객체를해제(Mark&Compact)하는 작업을 나타냅니다.
이러한 FullGC는 속도가 느리고성능에 아주 큰 영향이 있습니다.
이유는 Full GC가 수행되는 동안 자바 애플리케이션의멈춤현상이 동행되기 때문입니다.
'개발 > java' 카테고리의 다른 글
[java] springBoot + mybatis + mysql 게시판 환경설정(1) (0) | 2019.10.23 |
---|---|
[자료구조] java stack 구현하기 (2) (0) | 2019.03.10 |
[자료구조] java stack 정리 (1) (0) | 2019.03.10 |
[Java]ArrayLiist와 LinkedList 의 차이 (0) | 2019.01.09 |
[Java]String와 StringBuffer, StringBuilder의 장단점 및 차이점 (0) | 2019.01.05 |