Class Loader Subsystem:
The Class Loader subsystem is responsible for loading class
files into memory.
It includes three components: Bootstrap Class Loader,
Extension Class Loader, and Application Class Loader.
The Bootstrap Class Loader loads core Java classes from the
bootstrap classpath.
The Extension Class Loader loads classes from the extension
classpath.
The Application Class Loader loads classes from the
application classpath.
Runtime Data Area:
The Runtime Data Area is a memory area where Java runtime
components are allocated during program execution.
It consists of several components:
Method Area: Stores class-level structures such as class
bytecode, method data, and runtime constant pool.
Heap: Memory area used for storing objects and their
instance variables. It's the runtime data area shared among all threads.
Java Stack: Each thread has its own Java Stack, which stores
method-specific data, including local variables, method parameters, and
intermediate results.
PC Registers: Program Counter Registers hold the address of
the currently executing JVM instruction.
Native Method Stack: Stores native method information and is
used for executing native methods.
Execution Engine:
The Execution Engine is responsible for executing Java
bytecode.
It includes the Interpreter, Just-In-Time (JIT) Compiler,
and Garbage Collector (GC):
Interpreter: Reads and interprets bytecode instructions line
by line.
Just-In-Time (JIT) Compiler: Compiles frequently executed
bytecode into native machine code for improved performance.
Garbage Collector (GC): Manages memory by reclaiming unused
objects and freeing up memory space.
Native Method Interface:
The Native Method Interface allows Java code to call native
methods written in other languages such as C or C++.
It provides a bridge between the Java runtime environment
and native libraries.
Native Method Libraries:
Native Method Libraries contain native libraries required
for executing native methods invoked by Java applications.
Java Native Interface (JNI):
The Java Native Interface allows Java code to call native
methods and interact with native applications or libraries.
JVM Shutdown Hooks:
JVM Shutdown Hooks provide a way to run custom cleanup tasks
before the JVM exits.
They allow developers to release resources, close
connections, or perform any necessary cleanup operations.
Understanding the JVM architecture helps Java developers
write efficient and optimized code while also providing insights into how Java
programs execute and manage memory resources.
This comment has been removed by the author.
ReplyDeleteEasy to understand
Delete