This project contains examples showing how some JVM internals are implemented. It wasn't created as an exhaustive source of knowledge, but rather as a (subjectively chosen) set of highlights that may be a start for looking deeper into internal mechanisms we are using everyday :)
Word Java may be ambiguous. It may refer to the Java language, but it is also often used to describe JVM (Java Virtual Machine) or even whole ecosystem - language, runtime environment, development tools and libraries. In this document Java always refers to language and virtual machine is described as JVM.
Presented examples by their nature are closely coupled with specific JVM implementation. Virtual machine can be called JVM if it is compatible with JVM specification. However that specification doesn't cover many internal elements, giving a free hand to actual implementers. Thanks to that approach, multiple JVM implementations are existing on the market - they can make their own optimizations based on the eventual use cases.
JVM implementation used to test presented examples is OpenJDK 8. OpenJDK is an open source project that is very similar to proprietary "HotSpot" JVM from Oracle.
This project is divided into sections:
Direct source of information is linked directly in the text. However I would like to link to other sources that helped me create this project: