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
'java core' 카테고리의 다른 글
자바의 clone, guava의 Maps, Lists 사용 (0) | 2016.12.01 |
---|---|
JVM의 safepoint (0) | 2016.09.08 |
java의 enum 사용시 주의사항 - java.lang.NullPointerException: Name is null (0) | 2016.08.03 |
java7->java8 전환 관련 네트워킹 이슈 (getaddrinfo) (0) | 2016.07.26 |
java7 -> java8 전환 with spring 3.2 (1) | 2016.07.21 |