Class Data Sharing (CDS) is a feature introduced in Java 5 to improve startup performance and reduce the memory footprint of Java by storing the preprocessed class metadata of system classes on disk and sharing it between virtual machines. During the last years, CDS has been constantly improved. In OpenJDK 10, CDS will be extended by AppCDS which additionally allows sharing of application classes between VM instances (see JEP 310: "Application Class-Data Sharing" [1]). In this talk I will briefly introduce CDS and AppCDS and demonstrate how it can be used. While CDS is well documented, the usage of AppCDS with application classes and custom class loaders still requires a lot of hand crafting so I'll introduce a small tool which helps automating these tasks. After presenting some memory consumption and performance numbers, I will do a short deep-dive into the implementation details and describe some of the challenges. Finally, I will briefly show how Strings and Symbols can be stored in the CDS archive [2] and shared across VM as well since OpenJDK 9. After the talk, the audience should have a better understand of CDS/AppCDS and be able to decide whether it makes sense to use it for their own applications. [1] http://openjdk.java.net/jeps/310 [2] http://openjdk.java.net/jeps/250

Talk Level:
INTERMEDIATE

Bio:
Volker Simonis works in SAP JVM Technology group. He is an OpenJDK contributor from the very beginning and helped SAP to engage in the OpenJDK project. He's the project lead of the OpenJDK PowerPC/AIX and s390x porting projects, a JDK reviewer and JCP Executive Committee representative for SAP. He's also a member of the JCP JSR 379 (Java SE 9), JSR 383 (Java SE 10) and JSR 384 (Java SE 11) Expert Groups.