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{}以上就是小编今天的分享了,希望可以帮助到大家。