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: