The JVM is the entire Java Virtual machine (Java VM).
Computing-centric architecture can be divided into the following sections:
1. Instruction set: A set of commands that this computer can recognize as a machine language;
2. Calculation unit: The function module which can identify and control the instruction execution;
3. Addressing method: The number of addresses, the minimum address and maximum address range, and the operating rules of the address;
4. Register definition: including the operand register, the variable address register, the control register and so on the definition, the quantity and the use way;
5. Storage unit: The unit that can store the operand and save the operation structure, such as kernel-level cache, memory and disk;
The execution engine is the core part of the JVM, and its role is to parse the JVM bytecode instructions and get the command results.
The JVM divides the memory structure according to the storage structure of the run-time data. When running Java programs, the JVM sees that they are divided into several different formats that are stored in different regions, which are collectively known as runtime data.
Runtime data includes the data information of the Java program itself and the additional data information required by the JVM to run the Java program, such as a pointer to the execution of the current program instruction (also known as a PC pointer).
In the Java Virtual Machine specification, the Java Runtime data is divided into 6 types, namely:
PC register data, Java stack, heap, method area, local method area, run constant pool;
JVM architecture and how it works