In this talk we will explore the life cycle of a Java class in depth. We will see how classes can be generated (statically by a compiler, dynamically at runtime or even "anonymously" by the VM itself), how they get loaded into the VM and how they can be modified (i.e. instrumented) during this process. We will describe how classes may live in different class loaders and how a single class loader can have several versions of the same class due to class redefinition. We will also explain how classes are maintained inside the HotSpot virtual machine (in the meta-space) and how they are mirrored in Java trough java.lang.Class objects. We will show how class loading and redefinition can impact apparently unrelated parts of the VM like for example JIT compilation and how the VM manages these dependencies. Finally we will see how classes can die and how they finally get garbage collected.
Volker Simonis, SAPvolker_simonis
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.