JVM architecture can be described in terms of the runtime data structure in the memory and in terms of the two subsystems that use the runtime data – the classloader and execution engine.
JVM architecture
Runtime data areas
Each of the runtime data areas of JVM memory belong to one of two categories:
- Shared areas, which include the following:
- Method area: Class metadata, static fields, methods bytecodes
- Heap area: Objects (state)
- Not shared areas, dedicated to each application thread, which include the following:
- Java stack: Current and caller frames, each frame keeping the state of Java (not native) method invocation:
- Values of local variables
- Method parameters values
- Values of operands for intermediate calculations...
- Java stack: Current and caller frames, each frame keeping the state of Java (not native) method invocation: