java jvm

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

java jvm是什么,让我们一起了解一下?

jvm是java上的一个虚构出来的计算机,是一个位于Java与操作系统之间的中间态。有自己完善的硬件结构,如处理器、堆栈、寄存器等,还具有相应的指令系统。

JVM的作用是什么?

Java程序的跨平台特性主要就是因为JVM实现的。在编译java程序时会将写好的源程序通过编译器编译生成.class文件(又称为字节码文件),之后就是通过JVM内部的解释器将字节码文件解释成为具体平台上的机器指令执行,所以就可以实现java程序的跨平台特性。

JVM内部体系结构大致分为三部分:类装载器(ClassLoader)子系统,运行时数据区和执行引擎。

java jvm

那java程序运行与JVM的关系是怎样的?

1、java源文件编译生成.class文件(字节码)

2、字节码由JVM解释运行。

因为java程序既要编译同时也要经过JVM的解释运行,所以java被称为半解释语言

jvm在java应用中的具体案例分析如下:

public class TestClassLoader {    public static void main(String[] args) {        Person person_01 = new Person();        Person person_02 = new Person();        Person person_03 = new Person();        //发现person_01,person_02,person_03的hashCode一致,代表这三个实例化对象隶属于一个Class,即Person        System.out.println(person_01.hashCode());        System.out.println(person_02.hashCode());        System.out.println(person_03.hashCode());        //Person实例化对象person_01通过getClass()方法得到Class对象Person        Class Person = person_01.getClass();        //Person通过getClassLoader()方法得到系统类加载器        ClassLoader myClassLoader = Person.getClassLoader();        System.out.println(myClassLoader.hashCode());        //加载器对象myClassLoader通过getParent()方法得到拓展类加载器        ClassLoader myParentClassLoader = myClassLoader.getParent();        System.out.println(myParentClassLoader.hashCode());        //加载器对象myGPClassLoader通过getParent()方法得到引导类加载器        ClassLoader myGPClassLoader = myParentClassLoader.getParent();        System.out.println(myGPClassLoader.hashCode()); //发现报错,无法通过方法获取引导类加载器    }}class Person{}