Understanding Java Virtual Machine (JVM)

gyana mishra
3 min readSep 3, 2023

--

Java Virtual Machine (JVM) is a fundamental component of the Java platform, playing a crucial role in executing Java applications. In this article, we will explore what JVM is, its architecture, and its life cycle.

What is Java Virtual Machine (JVM)?

JVM, short for Java Virtual Machine, serves as the runtime environment for Java applications. It is responsible for executing Java bytecode, which is generated by the Java compiler from source code written in the Java programming language. This bytecode is stored in .class files and can be executed on any platform with a compatible JVM. This “write once, run anywhere” capability is one of the key strengths of Java.

Life Cycle of a Java Virtual Machine (JVM) Instance

A JVM instance is created when a Java application starts running. This occurs when you execute a Java program using the java command. The JVM instance's life cycle begins with the application's execution and ends when the main method completes. Each Java application runs inside its own JVM instance, so running multiple Java applications simultaneously would create multiple JVM instances.

Java Virtual Machine (JVM) Architecture

The architecture of the Java Virtual Machine is crucial to understanding how it works. Let’s delve into the various components of JVM architecture:

Class Loader Subsystem

The Class Loader Subsystem is responsible for loading .class files (bytecode) into the JVM. Before loading, bytecode is verified by the Byte Code Verifier to ensure its integrity. There are three main class loaders in JVM: Bootstrap Class Loader, Extension Class Loader, and System/Application Class Loader.

Read More: Class Loaders in Java

Runtime Data Areas

JVM manages memory through different data areas to execute programs efficiently. These runtime data areas include:

Method Area

The Method Area stores class bytecode, class structure, static variables, runtime constant pools, and interned strings. It essentially holds information about the class structure.

Read More : Method Area in JVM

Heap Area

The Heap Area is where all objects and arrays created by the Java program are stored. Every JVM instance has only one Method Area and one Heap Area, shared by all threads within that instance.

Read More : Heap Area in JVM

Java Stack Area

Each thread running in the JVM has its own Java Stack, which contains frames. Each frame corresponds to a method invocation, storing information about local variables, intermediate computation results, and method parameters.

Program Counter (PC) Register

Every Java thread has its own PC register, which contains the address of the currently executing bytecode instruction.

Native Method Stacks

The Native Method Stacks store native method code needed by the Java application.

Execution Engine

The Execution Engine is responsible for executing Java programs and consists of two main components:

Interpreter

The Interpreter reads, interprets, and executes bytecode instructions one by one. While it can quickly interpret individual bytecodes, execution is relatively slow.

JIT Compiler (Just-In-Time Compiler)

The JIT Compiler compensates for the slow execution of the Interpreter. It compiles entire sections of bytecode into native code. Once compiled, the Execution Engine runs this native code directly, resulting in significantly faster execution.

Read More : JIT Compiler

Conclusion: Java Virtual Machine (JVM)

Java Virtual Machine (JVM) serves as the dynamic foundation for running Java applications. It executes bytecode and manages memory efficiently. Understanding the architecture and components of the JVM is crucial for developers to optimize performance and troubleshoot Java applications effectively.

JVM allows developers to write Java code once and run it on multiple platforms, making it a versatile and widely used platform for software development. As technology continues to evolve, the JVM remains a prominent and essential part of the development landscape, supporting not only Java but also other languages that run on the JVM, such as Scala, Groovy, and Kotlin.

Must Read JVM Related Articles

JDK vs JRE vs JVM

Common JVM Arguments

Xms and Xmx Parameters

Garbage Collection in Java

Garbage Collector Types

Garbage Collection Optimization

Metaspace

JVM Interview Questions

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

gyana mishra
gyana mishra

Written by gyana mishra

Experienced IT professional with expertise in software development, and delivering high-quality IT projects. Website: https://javagyansite.com

No responses yet

Write a response