JVM学习01总体概述

在这里插入图片描述
JVM的整体结构
HotSpot VM是目前市面上高性能虚拟机的代表作之一,它采用解释器与即时编译器并存的架构

Java编译器输入的指令流基本上是一种基于栈的指令架构,另外一种指令集架构则是基于寄存器的指令集架构

一、指令集构建
同样执行2+3这样的逻辑操作,其2指令分别如下:
1.基于栈的计算流程

public class StackStruTest {
    public static void main(String[] args) {
        int i=2;
        int j=3;
        int k=i+j;
    }
}

然后进行反编译
在这里插入图片描述
这里有个改正,我们进行反编译的语句应该为:javap -v 要反编译的文件(在上面对应的是StackStruTest.class)
和dos命令窗下一样,先找到代码路径,然后
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200303004410164.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpb
2.基于寄存器的计算流程

mov eax, 2  //将eax寄存器的值设为1
add eax,3   // 使eax寄存器的值加3

栈:
跨平台性、指令集小、指令多;执行性能比寄存器差

二、JVM的生命周期

  • 虚拟机的启动
    通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类就是由虚拟机的具体实现指定的
  • 虚拟机的执行
    执行一个所谓的Java程序的时候,真真正正在执行的是一个叫做Java虚拟机的进程
  • 虚拟机的退出
    有如下几种情况:
    程序正常执行结束
    程序在执行过程中遇到了异常或者错误而异常中止
    由于操作系统出现错误而导致Java虚拟机进程中止
    由于线程调用Runtime类或System类的exit方法,或Runtime类的halt方法,并且Java安全管理器也允许这次exit或halt操作
    除此之外,JNI(Java native interface)规范描述了用JNI Invocation API来加载或卸载Java虚拟机时,Java虚拟机的退出情况
发布了20 篇原创文章 · 获赞 3 · 访问量 1715

猜你喜欢

转载自blog.csdn.net/weixin_43493354/article/details/104623382