컴퓨터활용/자바

JVM Garbage Collection 순간 포착

멜번초이 2012. 5. 25. 07:21

자바머신에서는 일정시간이 지나면 GC(Grabage Collection)라는 작업을 해 준다. 개발자로서는 일일이 메모리를 해제하지 않아도 된다는 생각에 마음껏 오브젝트를 생성해서 사용하겠지만 이정도의 출렁임임을 안다면 경계해야 할 것이다. 그래프에서 보듯이 이 순간에 시스템의 성능이 현저히 떨어지는 현상을 경험하게 된다. (거의 50%로 떨어짐)  

 

안정적인 거래가 보장되어야 하는 금융거래에서 이런 출렁임은 정말 끔찍한 경우가 될 것이다. JVM 을 띄울 때  heap memory를 충분히 잡아 준다하더라도 이런 출렁임의 시간간격을 줄일 수 있을 뿐이다. heap메모리가 적을 경우 이런 멈칫 하는 출렁임을 더 자주 경험하게 되는 것이다.  

 

이런 GC 작동은 예측할 수 없는 순간에 갑자기 찾아온다는 것이 치명적이다. 실시간 대량 거래가 빈번한 증권, 은행, 카드 같은 시스템에서는 가슴이 철렁하는 순간이 될 것이다. 그래서 어느 JVM 이던지간에 기업용이라면 최소 2G 정도는 잡아 줘야 한다.

 

아래그림은 약30분 간 부하발생기로 부하를 집중 발생시켜서 시스템의 성능을 테스트해본 결과이다. 시험 중간에 GC가 한번 발생하였는데 그 순간의 그래프 모양을 덤프떴다.