자바 어플리케이션 성능 향상 방법(쓰레드 배치 성능 향상)

Posted by Breeze24
2016. 10. 31. 21:29 Java

자바 프로그램을 사용하다 보면 자바로 만든 어플리케이션이 뜻하지 않게 느려지는 경우가 발생한다. 

특히 쓰레드를 여러 개 생성해 사용하는 배치 프로그램일 경우는 개별 쓰레드로 보면 느리지 않는데, 쓰레드가 몇 개 늘어나다 보면 더욱 더 느려지는 경우도 있다. 


단일 쓰레드라면은 프로그램 사이사이에 시간을 로깅하여 이 것으로 성능 향상이 필요한 구간을 찾을 수 있지만 멀티 쓰레드 프로그램이라면은 찾기가 어려워 진다. 


특히 단일 쓰레드에서는 빠른데, 멀티 쓰레드로 할 때만 급격히 느려진다면, 아래 사항을 확인해 보자. 

.

자바 어플리케이션 성능 향상 방법


글쓴이의 경우는 초기에 OS의 소켓 생성 갯수가 영향을 미칠 수 있나에 대해 의심하고 찾아보았으나, 큰 문제가 없었다. 


그러다 GC를 확인해 보니, 특이한 점이 있었다. 

중간 중간에 GC가 발생하는데, 생각 보다 많은 힙의 반환이 발생했다. 


자바 어플리케이션 성능 향상 방법


이를 토대로 자바 프로그램 안에서 꼭 클래스 변수로 실행될 필요가 없는 것들을 static으로 선언하였다. 

특히 logger를 static으로 선언했을 때 속도가 빨라졌다. 


private static Logger logger = Logger.getLogger(File.class);


위의 내용을 참고하여 프로그램 안에서 메모리를 효율적으로 사용하도록 코딩하면 멀티 쓰레드의 자바 어플리케이션의 성능도 많이 향상될 것이다. 
.