01 January 2010

[JavaSpecialists 179] - Escape Analysis

[JavaSpecialists 179] - Escape Analysis. Wow, this article is showing some huge improvements with escape analysis. A reasonable complex use-case I tested showed no significant difference when it was first released. Maybe I should try -XX:+DoEscapeAnalysis again, along with -XX:+UseCompressedOops and -XX:+AggressiveOpts. Some notes from 6u14:

Optimization Using Escape Analysis
The -XX:+DoEscapeAnalysis option directs HotSpot to look for objects that are created and referenced by a single thread within the scope of a method compilation. Allocation is omitted for such non-escaping objects, and their fields are treated as local variables, often residing in machine registers. Synchronization on non-escaping objects is also elided.

Compressed Object Pointers
The -XX:+UseCompressedOops option can improve performance of the 64-bit JRE when the Java object heap is less than 32 gigabytes in size. In this case, HotSpot compresses object references to 32 bits, reducing the amount of data that it must process.

Improvement TreeMap Iteration
6u14 includes an experimental implementation of java.util.TreeMap that can improve the performance of applications that iterate over TreeMaps very frequently. This implementation is used when running with the -XX:+AggressiveOpts option.