면접 - 자바

개발자 면접 질문 - jvm 튜닝

snow-line 2020. 12. 3. 20:38
반응형

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 부담 증가

반응형