JDK에는 Flight Recorder라는 훌륭한 프로파일러가 포함되어 있다. 진짜 괜찮은 프로파일러이다. 나는 JDK 8(101)을 쓰고 있다.


테스트를 위해서 CPU를 많으 쓰는  MyApp.java 를 생성한다. 



$ java -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:StartFlightRecording=duration=60s,filename=myrecording.jfr MyApp

Started recording 1. The result will be written to:

..

디렉토리에 myrecoding.jfr 에 생성된다.


이제 설치된 java mission control을 실행한다.

$ jmc &


그리고, File - Open 을 클릭해서 myrecoding.jfr을 연다.



프로파일링 관련 다양한 정보를 보여준다.


Flight Recorder는 런타임에 JVM이 나타나는 이벤트를 기록할 수 있는 내부 JVM 후크(hook)를 사용하여 동작할 수 있도록 설계되었다. Flight Recorder가 캡처한 이벤트는 메모리 할당, 쓰레드 상태 변경, IO 동작, CPU 동작을 포함한다.



Flight Recorder는 비-상용 환경에서 무료로 사용할 수 있다. 상용 환경의 사용에 대해서 알려면, 오라클 라이선스-http://docs.oracle.com/javacomponents/jmc-5-5/jfr-runtime-guide/about.htm를 살펴본다.


문서를 보면, 다음과 같이 적혀 있다. 상용 환경에서 사용하려면 commercial license를 획득해야 한다.
Java Flight Recorder requires a commercial license for use in production. To learn more about commercial features and how to enable them please visit http://www.oracle.com/technetwork/java/javaseproducts/.


Flight Recorder는 JMC와 같은 Oracle Java SE Advanced & Suite Products 군에 속한다. 



자세한 내용은 아래를 참고한다. 


http://docs.oracle.com/javacomponents/jmc-5-5/jfr-runtime-guide/about.htm

Posted by '김용환'
,