반응형
1. 튜닝 필요성
- Xms 옵션과 Xmx 옵션 메모리 설정 없이 사용중일때
- JVM 옵션에 -Server 옵션이 설정되어 있지 않을 때
- 시스템에 Timeout 같은 로그가 발생하면서 정상적인 트랜잭션 처리가 이루어지지 않을 때
2. 튜닝 목적
- 첫번째로 Old Area로 넘어가는 Object의 수를 최소화 한다.
- Full GC의 실행 시간을 줄인다.
3. Object 수 최소화 방법
- String 대신 StringBuilder나 StringBuffer 사용
- 로그를 최대한 적게 쌓도록 한다.
- 대용량 XML 파일을 사용 않는다. (현실적으로 이렇게 하기에는 어려움)
- Object의 수를 줄이면 Old Area로 이동하는 Object의 수가 줄어들면서 Full GC 발생하는 빈도가 줄어든다.
4. Full GC Time 줄이기
- Full GC Time 이 1초를 넘기지 않도록 설정해야 한다.
5. GC 확인 방법
- catarina.sh 에서 xloggc 옵션으로 gc 이력을 남긴다.
- gc 분석 툴을 사용해 gc 시간을 확인한다.
6. 메모리 설정
- 32GB 보다 힙이 작을 때는 Object Pointer를 압축하는 트릭을 사용한다.
- 그렇기 때문에 32GB가 넘어가면 각 포인터의 사이즈가 늘어난다.
- 32GB를 넘길 경우 메모리 낭비, CPU 성능 하락, GC 부담 증가
반응형
'면접 - 자바' 카테고리의 다른 글
개발자 면접 질문 - 멤버 변수와 지역 변수 (0) | 2020.12.03 |
---|---|
개발자 면접 질문 - 메모리 누수 원인 (0) | 2020.12.03 |
개발자 면접 질문 - non-static 멤버와 static 멤버의 차이 (0) | 2020.12.03 |
개발자 면접 질문 - 객체 지향 프로그래밍 5대 원칙 (0) | 2020.12.03 |
개발자 면접 질문 - 동기(Synchronous)와 비동기(Asynchronous) (0) | 2020.12.03 |