All You Need To Know About Java Virtual Machine- Understanding JVM Java


JVM for Java

Many people have written programs with Java, perhaps wondering what Java’s run-time engine JVM has and how it works. This article will take you to know how these things work and what is JVM java?

What is JVM Java?

JVM (Java Virtual Machine) is a run-time engine for Java application to run by JVM as a main method trigger and part of JRE (Java Runtime Environment).

Java is known as A WRITEOnce Run Anywhere — Write Once Run Anywhere), which means that programmers can program Java that works on one system and can work on other systems without modifying the program.

What is the role of JVM in Java?

What is JVM in Java with diagram?

Is JVM written in Java?

What JRE in Java?

When we compile a .java compiler file, the .class file is named as the .java file, a file that contains the program’s bytecode.

JVM is divided into 3 parts as follows:

  1. Class Loader Subsystem
  2. Runtime Data Area (JVM Memory)
  3. Execution Engine

Class Loader Subsystem

Java dynamic class loading functionality is handled with the ClassLoader Subsystem section by performing the Load, Link, and Initialize File Class steps. When referring to the first class while working Do not use compilation episodes. as follows:

Loading

ClassLoader will read the .class file and then create binary data and save it in the method area after loading the .class file, and JVM creates an object of the class representing the file in heap memory.

Link

After the object of the class in heap memory, the next step is to link together, with Verification, Preparation, and Resolution.

1. Verification — Validate the loaded class.

2. Preparation — Allocate memory for class translators and default settings.

3. Resolution — Converts a symbolic reference to a direct reference

Initialize

This is the last step of Class Loading, where all static translators are configured with the values defined in the program from top to bottom and from the parent class to the child class.

Typically, there are 3 ClassLoaders:

  1. Bootstrap ClassLoader — Serves to load classes from the bootstrap classpath, which is a Java core API in JAVA_HOME/jre/lib.
  2. Extension ClassLoader — A ball of bootstrap class loader serves loading extension classes that are in JAVA_HOME/jre/lib/ext
  3. Application ClassLoader — A ball of extension class loader serves loading class path application, classes

Runtime Data Area

The Runtime Data area is divided into 5 parts:

1. Method Area

Class-level information is stored in this section, including static translators, with only one part in JVM and a shared part of JVM.

2. Heap Area

All object and object-related object translators and arrays are stored in this section, which has only one section in JVM and a shared part of the JVM.

3. Stack Area

Java Virtual Machine (JVM) & its Architecture

For every thread, JVM creates a run-time stack for each thread, and every method call is an entry within the memory stack, called a stack frame, all variables are created in the memory stack after the thread stops running-time stack, it is destroyed, which stacks the frame is divided into:

  1. Local Variable Area — Related to how much local variable scan is stored here.
  2. Operand Stack —works like a runtime workspace to perform operations.
  3. Frame Data — all symbols about the method are stored here in the case of the exception, the data of the catch block is maintained in the data frame.

4. PC Registers

Each thread contains a separate PC Register, which stores the address of the processed command. If the command is processed, the PC register will be changed to the following command.

5. Native Method Stack

For every thread, it creates a separate native stack, which stores the information of the native method of thread.

Execution Engine

Bytecode, which is in the runtime data area, is processed with this Execution Engine, which reads bytecode and processed at a line consisting of 3 sections:

1. Interpreter

It is a section that translates bytecode and processed one by line. The downside is that if the same method is activated several times, every time it must be translated with Interpreter.

2. JIT Compiler

It is used to optimize The Interpreter, which compiles both bytecode and changes to native code, so whenever Interpreter sees the duplicate method, JIT provides native method directly for that part, so it won’t need to be retranslated whenever running the original method, making it more efficient.

There are sections as follows:

Intermediate Code Generator — Create intermediate code

Code Optimizer — Improved intermediate code performance

Target Code Generator — Create a machine code or native code

Profiler — a special part that makes a hotspot search.

3. Garbage Collection

This is a section that collects and deletes objects that are not referenced in memory, which can be run directly from the JVM’s Garbage Collection.System.gc()

Java Native Interface

As a section associated with the Native Method Library and the Native Library (C, C++) required to execute the Execution Engine, JVM can activate the C/C++ library.

Native Method Library

It is a native library that is necessary for execution engines.

Ending!

This is everything you need to know about what is JVM right now. If you have any further doubts regarding this, feel free to address them in the comments section below and we will get back to you ASAP! This article has delineated in detail about the JVM architecture, JVM java and how jvm works!