Friday 16 January 2015

Java Flight Recorder (JFR)

JFR is a Java profiler which will allow you to investigate the runtime characteristics of your code. Typically you will use a profiler to determine which parts of your code are causing  large amounts of memory allocation or causing excess CPU to be consumed.

There are plenty of products out there.  In the past I've used YourKit, OptimizeIt, JProfiler, NetBeans and others. Each has its benefits and it is largely a matter of personal preference as to which you choose. My current personal favourite is YourKit. It integrates nicely into IntelliJ has a relatively low overhead and presents its reports well.

The truth is that profiling is a very inexact science and it is often worth looking at more than one profiler to build up a clearer picture of what exactly is going on in your program. To my knowledge most of the profilers rely on the JVMP/JVMTI agents to probe the Java program. A major problem with this is safe points. This means your Java program can only be probed when it is at a safe point. This means that you will get a false picture of what is really going on in your program especially if much of the activity is between safe points. Also all profilers, to a varying degree add overhead.  Profiler overhead will change the characteristics of your program and may cause misleading results from your analysis. Much more information here.

Enter JFR.  JRF has been bundled with the JDK since release 7u40. JFR is built with direct access to the JVM. This not only means that there is a very low overhead (claimed to be less than 1% in nearly all cases) but also does not rely on safe points.  Have a look here at an example of how radically different an analysis from YourKit and JFR can look.

To run JFR you need to add these switches to your Java command line:

-XX:+UnlockCommercialFeatures -XX:+FlightRecorder

JFR is located in Java Mission Control (JMC).  To launch JMC just type jmc in your command line and if you have the JDK in your path the JMC console will launch.  You should see your Java program in the left hand pane.  Right click on your program and then start flight recording.


You will be presented with a dialog box where you can just accept the defaults (sample for a minute) and then your results will be displayed.  It's worth paying around with the options to find how this will work best for you.  As with all good products this GUI is fairly intuitive.

As you can tell from the command line switches it is commercial feature.  I'm not exactly sure what that means but you can read more about that in the documentation here. Also you can run this from the command line, it's all in the documentation.

One problem I did find was when I downloaded the latest Java8 snapshot (at this time 1.8.0_40-ea) I was unable to launch my program and got the following message:

/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/bin/
Error: Trying to use 'UnlockCommercialFeatures', but commercial features are not available in this VM.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

In summary, JFR is a great addition to any developers toolkit and as long as you are using JDK release 7u40 or above it's certainly worth trying it out on your code.

(I encourage you to have a look at a previous post First rule of performance optimisation in conjunction with JFR)

67 comments:

  1. Nowadays, most of the businesses rely on cloud based CRM tool to power their business process. They want to access the business from anywhere and anytime. In such scenarios, salesforce CRM will ensure massive advantage to the business owners.Cloud Computing Training in Chennai

    ReplyDelete
  2. INTERESTING TO KNOW ABOUT Java Flight Recorder (JFR)
    awesome post.. thanks for sharing. expecting much in future.

    Selenium Training in Chennai

    ReplyDelete
  3. Nice and usefull contents. thanks for sharing. expecting much in the future.

    RPA Training in Chennai

    ReplyDelete
  4. It is a great post. Keep sharing such kind of useful information.

    smarthrsolution
    Education

    ReplyDelete
  5. This information is impressive. I am inspired with your post writing style & how continuously you describe this topic. Eagerly waiting for your new blog keep doing more.
    Android Training in Bangalore
    Android Institute in Bangalore
    Android Coaching in Bangalore
    Android Coaching Center in Bangalore
    Best Android Course in Bangalore

    ReplyDelete
  6. your blog informations are really creative and It contains full of new innovative ideas.thank you for sharing with us.please update more data.
    Salesforce Training in Perambur
    Salesforce Training in Mogappair
    Salesforce Training in Ashok Nagar
    Salesforce Training in Nungambakkam

    ReplyDelete
  7. Positive site, where did u come up with the information on this posting?I have read a few of the articles on your website now, and I really like your style. Thanks a million and please keep up the effective work.

    machine learning training in Velachery
    machine learning training in Chennai
    Android training in Chennai
    PMP training in chennai

    ReplyDelete
  8. Thank you so much for your information,its very useful and helful to me.Keep updating and sharing. Thank you.
    RPA training in chennai | UiPath training in chennai

    ReplyDelete
  9. This is really too useful and have more ideas and keep sharing many techniques. Eagerly waiting for your new blog keep doing more.
    JAVA Training in Chennai
    Android Training in Chennai
    German Classes in Chennai
    German Language Classes in Chennai

    ReplyDelete
  10. Thank you for sharing this blog, it is very useful information....
    Java training bangalore

    ReplyDelete
  11. Instead of relying only on the feedback or opinions from the Salesforce Consultants, it is desirable to check the discussion boards, user groups as well as other social media outlets in finding out what actually people are saying about the Consulting Company and its staffs and customer service. Salesforce training in Hyderabad

    ReplyDelete
  12. Your good knowledge and kindness in playing with all the pieces were very useful. I don’t know what I would have done if I had not encountered such a step like this.
    Digital Marketing Course in Chennai
    Digital Marketing Courses in Bangalore
    Digital Marketing Course in Delhi
    Digital Marketing Online Course

    ReplyDelete
  13. This is really too useful and have more ideas and keep sharing many techniques. Eagerly waiting for your new blog keep doing more.
    DevOps Training in Chennai
    DevOps Training in Bangalore
    DevOps Online Training
    DevOps Training in Coimbatore

    ReplyDelete
  14. Great blog! This is really helpful for my reference. Do share more such posts and keep us updated. Looking forward to more informative blogs from you.
    Cloud Computing Training in Chennai
    Cloud Computing Courses in Chennai
    Cloud Computing Courses in Bangalore
    Cloud Computing Courses in Coimbatore

    ReplyDelete
  15. Thanks for another great post. Where else could anyone get that kind of information in such a perfect way of writing? I've a presentation next week, and I'm on the look for such information.
    buy electronics online

    ReplyDelete
  16. Thank you for sharing. Excellent post...! It is a very great idea and unique content. Thank you so much.
    first copy mens watch omega

    ReplyDelete
  17. I read this article fully on the topic of the difference of most up-to-date and earlier technologies, it’s awesome article.
    Website: malaysian passport

    ReplyDelete
  18. This post is so interactive and informative.keep update more information...
    Selenium Training in Bangalore
    Selenium Training in Pune

    ReplyDelete
  19. Thank you for sharing so insightful article. Rozana.in has a far-reaching presence across various cities in India.
    Visit for more info discount grocery stores

    ReplyDelete
  20. Hello there, You have done a great job. As we all know how much Bill of Sale being used. This document is usually used for sale and purchase between two parties like Buyer & seller.
    Visit here IL Bill of sale

    ReplyDelete
  21. İnsan böyle şeyler görünce mutlu oluyor

    ReplyDelete
  22. Thanks for posting. Useful information.

    Introducing a new application named Engadoctor. Especially design with newly emerging technology for Online Doctor Consultation & Book Online Doctor Appointment.

    ReplyDelete
  23. This is great content for your readers. Thanks for sharing.
    sporrans

    ReplyDelete
  24. IVC-Services is a private Consulting Agency. Click here - india visa

    ReplyDelete