JVM structure 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 the execution engine.
JVM structure
Runtime data areas
Each of the runtime data areas of JVM memory belongs to one of two categories:
- Shared areas that include the following:
- Method area: Class metadata, static fields, and method bytecodes
- Heap area: Objects (states)
- Unshared areas dedicated to a particular application thread, which includes the following:
- Java stack: Current and caller frames, each frame keeping the state of Java (non native) method invocation:
- Values of local variables
- Method parameter values
- Values of operands for intermediate...
- Java stack: Current and caller frames, each frame keeping the state of Java (non native) method invocation: