java jvm是什么,让我们一起了解一下?
jvm是java上的一个虚构出来的计算机,是一个位于Java与操作系统之间的中间态。有自己完善的硬件结构,如处理器、堆栈、寄存器等,还具有相应的指令系统。
JVM的作用是什么?
Java程序的跨平台特性主要就是因为JVM实现的。在编译java程序时会将写好的源程序通过编译器编译生成.class文件(又称为字节码文件),之后就是通过JVM内部的解释器将字节码文件解释成为具体平台上的机器指令执行,所以就可以实现java程序的跨平台特性。
JVM内部体系结构大致分为三部分:类装载器(ClassLoader)子系统,运行时数据区和执行引擎。
那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{}
以上就是小编今天的分享了,希望可以帮助到大家。