GC는 안쓰는 인스턴스를 처리하기 전에 반드시 stop the world를 하고 이 순간 모든 애플리케이션 동작이 멈추고 GC는 빠르게 불필요한 인스턴스 메모리를 제거합니다. 실제로 회사에서 인터셉터에서 계속 호출되는 똑같은 형태의 객체가 존재하여 플라이웨이트 패턴을 이용하여 자주 참조되는 인스턴스를 static으로 선언하여 GC 동작이 자주 되는 코드를 개선한 경험이 있었는데요. GC가 자주 호출 되면 그 만큼 stop the world가 자주 발생하여 사용자 입장에서 느껴질 정도로 애플리케이션 동작이 지연될 수 있다고 한 글을 읽어 이러한 개선을 했던 것입니다. (메모리 측면도 물론 고려하여) 그렇다면 stop the world가 길어질 수록 성능이 떨어지기 때문에 GC 튜닝의 최종 숙제는 결국 st..
GC를 알아보기 전 stop-the-world 라는 용어를 살펴보자, GC을 실행하기 위해 JVM이 애플리케이션 실행을 멈추는 것이다. stop-the-world가 발생하면 GC를 실행하는 쓰레드를 제외한 나머지 쓰레드는 모두 작업을 멈춘다. 어떤 GC 알고리즘을 사용하더라도 발생 되며 GC작업이 완료된 이후에 다시 중단했던 작업을 시작한다. 대게 GC 튜닝은 이 stop-the-world 시간을 줄이는 것이다. Java 프로그램 코드에서 메모리를 명시적으로 지정하여 해제하지 않는다. 그렇기에 이 작업을 GC가 더이상 필요없는 객체를 찾아 지우는 작업을 한다. 가비지 컬렉션은 두 가지 가설하에 만들어 진 알고리즘이다. 대부분 객체는 금방 접근 불가능 상태가 된다. 오래된 객체에서 젊은 객체로의 참조는 아..
- Total
- Today
- Yesterday
- MySQL
- 백엔드
- 동시성
- 자바
- DevOps
- 면접준비
- Spring
- 개발
- Redis
- java
- 취업준비
- 개발자
- 게시판
- thread
- 면접 준비
- DB
- 면접
- 코드
- swarm
- Kotlin
- IT
- 코딩
- 취준
- JPA
- CS
- docker
- 인터뷰
- 프로그래밍
- 프로젝트
- 취업
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |