2013. szeptember 23., hétfő

JavaOne Monday: Looking into the JVM Crystal Ball

The session "Looking into the JVM Crystal Ball" by Mikael Vidstedt (JVM Architect) was quite useful to get up to date regarding new Java 8 and HotSpot JVM features. Here are my notes about the session.

The PermGen will be removed. Its contents will be stored in the heap and native memory (see Metaspace) in the future. This means no more -XX:PermSize and -XX:MaxPermSize settings but an increased need to carefully plan and monitor the native memory space.

New features heavily relying on the relatively new (Java SE 7) invokedynamic JVM instruction: lambda expressions and Nashorn, the new JavaScript engine replacing Rhino. Both are actually implemented using invokedynamic. You can read about the invokedynamic instruction and static and dynamic typing in the official documentation "Java Virtual Machine Support for Non-Java Languages".

Huge heaps are now possible, which means "40 Gb and above", but terabytes of heap was also mentioned during the presentation.

Project Sumatra is dealing with new compiler features so that some computations can be offloaded to the GPU.

The already existing (7u4) G1 (Garbage-First) garbage collector's base idea is dividing the heap to partitions that it can work on paralelly as it is focusing on big heaps and low pause times. The goal in the future is to go for G1 only and to deprecate and remove the CMS garbage collector.

The Runtime JVM team works on Class Data Sharing which, as its name suggests, provides a means to share class data between applications and even JVMs. This will be implemented by using an image file that can be referenced from different JVMs. Dynamic string & symbol tables are also planned, e.g. the String pool (see String.intern()) size is increased and it will be resized dynamically.

Changes in Serviceability features and tools: Flight Recorder is meant to be used in production with a very little overhead (2-3% estimated). The Mission Control GUI application will be used to monitor the JVM (heap, threads, etc.) including data collected by Flight Recorder. Some JMX improvements are planned: using annotations for MBean configuration, providing REST APIs. One goal regarding serviceability is to deprecate and drop JConsole.

Above all, and from start, the main message of the presentation was that the goal is convergence of different JVMs including HotSpot, HotSpot CDC and JRockit, leading to one common JVM, for which all the necessary tools are provided.

As usual, at the end of the session everybody was encouraged to participate in the JDK 8 evolution. They appreciate any general feedback, GC feedback, and JDK 8 testing and error reporting which you can start by downloading and using the JDK 8 Early Access release.

Update: Here is the link for the presentation's site and the slides.

Nincsenek megjegyzések:

Megjegyzés küldése