JIT tips and tricks
Updated instructions for building hsdis on OSX (February 3, 2018)
Build hsdis-amd64.dylib for your JRE using OpenJDK and binutils...
Build hsdis-amd64.dylib for your JRE using OpenJDK and binutils...
Run an IBM J9 VM in a docker container (March 19, 2017)
How to execute a Java program on the J9 VM and get a JIT log...
How to execute a Java program on the J9 VM and get a JIT log...
JITWatch on ARM (Raspberry Pi) (March 5, 2017)
Use JITWatch to optimise your Java code on ARM CPUs. Instructions for adding windowed JavaFX and hsdis support to the Oracle ARM JDK...
Use JITWatch to optimise your Java code on ARM CPUs. Instructions for adding windowed JavaFX and hsdis support to the Oracle ARM JDK...
JITWatch code cache visualisation (February 2, 2017)
Watch the HotSpot JVM code cache fill up as the JIT compilers optimise your code...
Watch the HotSpot JVM code cache fill up as the JIT compilers optimise your code...
JITWatch hits 1000 stars on GitHub (January 6, 2017)
Thanks to all the contributors and supporters!...
Thanks to all the contributors and supporters!...
JITWatch lock elision report (January 4, 2017)
JITWatch can now report on locks eliminated through the HotSpot lock elision optimisation...
JITWatch can now report on locks eliminated through the HotSpot lock elision optimisation...
New JITWatch sandbox example - no partial escape analysis (December 18, 2016)
HotSpot doesn't perform partial escape analysis so if an object escapes the method on any branch the heap allocation cannot be avoided...
HotSpot doesn't perform partial escape analysis so if an object escapes the method on any branch the heap allocation cannot be avoided...
New JITWatch sandbox example for reducing a megamorphic callsite (December 13, 2016)
Peel off one type into a separate callsite using an instanceof check...
Peel off one type into a separate callsite using an instanceof check...
JITWatch escape analysis video (October 18, 2016)
Learn how JITWatch can show you the eliminated heap allocations as HotSpot optimised your program...
Learn how JITWatch can show you the eliminated heap allocations as HotSpot optimised your program...
Bytecode size histograms for popular Java-based projects (April 30, 2016)
Here are the bytecode histograms showing method size distributions for popular Java-based projects such as Android Studio, Scala, Groovy, Gradle, Eclipse, as well as the JDK and JavaFX....
Here are the bytecode histograms showing method size distributions for popular Java-based projects such as Android Studio, Scala, Groovy, Gradle, Eclipse, as well as the JDK and JavaFX....
More Bytecode Geekery with JarScan (April 10, 2016)
So I saw this tweet and had some thoughts about bytecode size distribution :)...
So I saw this tweet and had some thoughts about bytecode size distribution :)...
Statistical Analysis of Core Libs Bytecode using JarScan (February 17, 2016)
The JarScan tool (part of the JITWatch project) can perform static analysis of your bytecode; counting allocated types, popular instruction sequences, most invoked methods, and methods above the FreqI...
The JarScan tool (part of the JITWatch project) can perform static analysis of your bytecode; counting allocated types, popular instruction sequences, most invoked methods, and methods above the FreqI...
JarScan comparison between 8u31 and 8u40 rt.jar (February 10, 2015)
Comparison of the methods above the 325 FreqInlineSize inlining limit between the two latest Oracle Java releases...
Comparison of the methods above the 325 FreqInlineSize inlining limit between the two latest Oracle Java releases...
The power of JIT inlining (September 9, 2014)
A contrived example to show the impact of disabling method inlining in the HotSpot JVM using a Scala method call vs a tailrec...
A contrived example to show the impact of disabling method inlining in the HotSpot JVM using a Scala method call vs a tailrec...
Java 7 and Java 8 core methods above the default hot method inlining threshold (April 13, 2014)
A list of the methods in rt.jar from Java 7 and Java 8 that are too big to be inlined...
A list of the methods in rt.jar from Java 7 and Java 8 that are too big to be inlined...
Examination of PerformanceTools using JITWatch (October 29, 2013)
Analysis of why using an Exception outperforms an array bounds check in Francesco Illuminati's TryCatchVsCheckPerformanceTest...
Analysis of why using an Exception outperforms an array bounds check in Francesco Illuminati's TryCatchVsCheckPerformanceTest...
Understanding HotSpot logs (August 27, 2013)
Slides from a session I convened at the JCrete Java Specialists Symposium...
Slides from a session I convened at the JCrete Java Specialists Symposium...
Java JIT analysis and code coverage (June 12, 2013)
I am building a tool to visualise how much of a program's code is JIT compiled at runtime...
I am building a tool to visualise how much of a program's code is JIT compiled at runtime...
Ask me about
AdSense   Android   ant   Apache   Applet   Artigo   C++   CI   codec   console   CSS   Debian   DemoScene   deployJava.js   diff   DIY   Eclipse   Excel   fdisk   find   Firefox   FixPC   Flash   fuse   GC   git   GPG   grep   HotSpot   hsdis   HTML   Icedove   icedove   Iceweasel   ImageMagick   iOS   iPhone   iSCSI   ISO   JarScan   Java   JavaFX   JavaScript   JCrete   JDBC   JDK   Jenkins   Jessie   JIT   JITWatch   JVM   lambdas   lame   Linux   linux   low latency   LVM   Mac   MacPorts   maven   Microsoft   mkfs   mp3   MySQL   Networking   networking   NFS   Obj-C   OpenJDK   OpenJFX   openSSL   openssl   optimisation   OSX   Patterns   PHP   PIX   PostgreSQL   powersaving   PS3   Puzzle   qmail   Raspberry Pi   RaspberryPi   Safari   samba   Samba   Scala   scp   scponly   SEO   ssh   sshfs   stunnel   svn   SWT   sysctl   syslog-ng   tcpkill   Thunderbird   tmpfs   Tomcat   tripwire   Ubuntu   Unity   UTF-8   vi   VirtualBox   website   Websites   wget   Windows   Windows 8   Word   Xcode   xen   ZTE Blade