This section presents a JVM architecture and components shared by most JVM implementations.
Most JVM implementations share a similar architecture and some key components as
illustrated in the diagram below:
Functionalities provided by different components are described blow:
Class Loader -
Provides functionalities of loading, linking, and initializing classes
from .class files into JVM Memory.
JVM Memory -
Provides memory space to host run-time data areas:
Method Area, Heap, JVM Language Stacks, PC Registers,
Native Method Stacks, etc.
Execution Engine -
Responsible to read bytecode as JVM instructions from JVM memory and execute them.
During execution, it interacts with run-time data areas and Native Method Libraries.
The Execution Engine also includes a garbage collector
to manage run-time data areas.
Native Method Interface/Libraries -
Provides a mechanism to execute programs written directly for the native system.