网站怎么做seo,wordpress 多级导航,厦门成品网站,短网址生成链接文章目录 1、虚拟机2、Java虚拟机3、JVM的整体结构4、Java代码的执行流程5、JVM的分类6、JVM的生命周期 1、虚拟机
虚拟机#xff0c;Virtual Machine#xff0c;一台虚拟的计算机#xff0c;用来执行虚拟计算机指令。分为#xff1a;
系统虚拟机#xff1a;如VMwareVirtual Machine一台虚拟的计算机用来执行虚拟计算机指令。分为
系统虚拟机如VMware是完全对物理计算机的仿真程序虚拟机如JVM专门为执行单个计算机程序而设计JVM中执行的指令就是Java字节码指令
不论是哪种类型虚拟机其上面运行的软件或者程序都被限制于虚拟机所提供的资源之内。
2、Java虚拟机 JVM即Java虚拟机一台处理Java字节码文件解释为二进制文件的虚拟计算机Java程序运行在Java虚拟机内部。 JVM运行在操作系统之上并没有与计算机的硬件做直接的交互。因此不同的操作系统对应着不同的JVM JVM ⇒ JRE ⇒ JDK三者的关系 3、JVM的整体结构
以HotSpot为例 以上架构分三层看首先javac编译器将xx.java源文件编译为xx.class字节码文件
最上层由类装载器将字节码文件加载到内存中生成一个大的class对象中间层其中方法区、堆区是所有线程共享而栈、程序计数器、寄存器是一个线程一个最下层执行引擎里包括解释器、JIT即时编译器、GC垃圾回收器
上面结构图再详细 4、Java代码的执行流程
Java做为一种跨平台的语言一次编译到处运行。即Java源代码被成功编译为.class字节码后换平台运行无需再次编译。 具体流程为
Java源文件x.java被编译器javac.exeJDK自带编译成字节码文件x.class类装载器加载字节码文件到JVMJVM执行引擎中的解释器将字节码文件处理成二进制文件操作系统执行二进制文件和硬件进行交互
PSJava虚拟机不关心运行在其内部的程序是用的什么语言只要是遵循其规范编译的字节码文件就都能运行。 换言之不是牛在Java而是JVM。Java是跨平台的语言 ⇐ JVM是跨语言的平台
5、JVM的分类
Sun Classic VM , 1996 Java1.0 只有解释器没有JIT即时编译器因此性能较差Exact VMJava1.2准确式内存管理可直到内存中某个位置的数据具体是什么类型HotSpot VMJDK1.3时成为默认的虚拟机JRockit VM专注于服务器端不包含解释器IBM的J9与上面的HotSpot、JRockit是三大商用虚拟机2017年开源命名为Open J9KVM和CDC/CLDC HotspotMicrosoft JVMTaobao JVM阿里…
6、JVM的生命周期
STEP1启动JVM的启动时通过引导类加载器bootstrap class loader创建一个初始类initial class来完成的不同的虚拟机这个类也不同
STEP2执行开始执行Java程序时JVM开始运行程序执行结束JVM也就停止了jsp看JVM进程会发现其随着程序的结束而结束
STEP3退出程序正常执行结束JVM退出程序执行中遇到异常或错误且一值向上throw到了main方法main再抛就到JVMJVM退出操作系统出现错误也会可知JVM进程终止JVM退出某个线程调用Runtime类或System类的exit方法或者说是Runtime类的halt方法底层是native halt0方法