Home  >  Article  >  Java  >  What is a java virtual machine? A brief introduction to JVM

What is a java virtual machine? A brief introduction to JVM

青灯夜游
青灯夜游Original
2018-11-21 16:52:4823194browse

This article brings you what is JVM in Java? A brief introduction to the Java virtual machine to let everyone understand what the JVM can do and the role of the JVM. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

What is a java virtual machine? A brief introduction to JVM

What is JVM?

The Java Virtual Machine (JVM) is a virtual machine that runs Java bytecode, which is the core of the Java programming language. When we run a program, the JVM is responsible for converting the byte code into machine-specific code. JVM is also platform dependent and provides core Java functions such as memory management, garbage collection, security, etc.

JVM is called virtual because the interface it provides does not depend on the underlying operating system and machine hardware. This independence from hardware and operating system allows Java programs to be written once anywhere.

In the real world, JVM is a specification that provides a runtime environment that can execute Java bytecode.

What can the JVM do?

JVM performs the following operations:

1. Loading code

2. Verification code

3. Execute code

3. Provide runtime environment

JVM provides the following definitions:

1.Memory area

2. Class file format

3. Registration set

4. Garbage collection heap

5. Fatal error report, etc.

JVM Architecture

Let us take a look at the internal architecture of the JVM. It contains class loaders, memory areas, execution engines, etc.

What is a java virtual machine? A brief introduction to JVM

1. Class loader

Classloader is a subsystem of the JVM, used to load class files. Whenever we run a java program, it is first loaded by the class loader. There are three built-in class loaders in Java.

1), Bootstrap ClassLoader: This is the first class extension, which is the super class of the Extension class loader. It loads the rt.jar file, which contains all the class files of Java Standard Edition, such as java.lang package class, java.net package class, java.util package class, java.io package class, java.sql package class, etc.

2), Extension ClassLoader: This is the subclass loader of Bootstrap and the parent class loader of the System class loader. It goes through the jar files located in the $JAVA_HOME/jre/lib/ext directory.

3), System/Application ClassLoader: This is a subclass loader of the Extension class loader. It loads class files from the classpath. By default, classpath is set to the current directory. You can change the classpath using the "-cp" or "-classpath" switch. It is also known as Application class loader.

2. Class (method) area

Method area stores each type of structure, such as runtime constant pool, field and method data, and method code.

3. Heap

Heap is the runtime data area where objects are allocated.

4. Stacking

Java stacks storage frames. Stack contains local variables and partial results, and plays a role in method calls and returns.

Each thread has a private JVM stack, which is created at the same time as the thread.

A new frame is created each time the method is called. When the method call completes, the frame will be destroyed.

5. Program Counter Register

PC (Program Counter) register contains the address of the Java virtual machine instruction currently being executed.

6. Native Method Stack(Native Method Stack)

It contains all native methods used in the application.

7. Execution Engine(Execution Engine)

It includes:

1), virtual processor

2), Interpreter: reads the bytecode stream and executes the instructions.

3), just-in-time (JIT) compiler: used to improve performance. JIT simultaneously compiles parts of the byte code with similar functionality, thus reducing the time required for compilation. Here, the term "compiler" refers to the converter from the instruction set of the Java Virtual Machine (JVM) to the instruction set of a specific CPU.

8. Java Native Interface(Java Native Interface)

Java Native Interface (JNI) is a framework that provides an interface for communicating with another Communicate with another application written in a language like C, C++, Assembly, etc. Java uses the JNI framework to send output to the console or interact with OS libraries.

Summary: The above is the entire content of this article, I hope it will be helpful to everyone's study. For more related video tutorials, please visit: JavaTutorial!

The above is the detailed content of What is a java virtual machine? A brief introduction to JVM. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn