2.java代码执行流程

1.JVM的架构模型

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

  这两种架构方式之间的区别:

    1.基于栈式架构的特点:

      >设计和实现更简单,适用于资源受限的情况

      >避开了寄存器的分配难题:使用零地址指令方式分配

      >指令流中的指令大部分式零地址指令,其执行过程依赖于操作栈,指令集更小,编译器容易实现

      >不需要硬件支持,可移植性更好,更好的实现跨平台

    2.基于寄存器架构的特点

      >典型的应用式X86的二进制指令集,例如传统的pc以及Andriod的Davlik虚拟机

      >指令集架构则完全依赖于硬件,可移植性差

      >性能优秀和执行更高效

      >花费更少的指令去完成一项操作

      >在大部分情况下,基于寄存器架构的指令集往往是以一地址指令,二地址指令和三地址指令为主,而基于栈式架构的指令集则是基于零式指令为主

例子:

同样执行2+3的指令操作,其指令分别如下
1.集运栈式架构计算流程(以java虚拟机为例)
   iconst_2 //常量2入栈
   istore_1
   iconst_3 //常量3入栈
   istore_2
   iload_1
   iload_2
   iadd  //常量2,3出栈,执行相加
   istore_5  //结果5入栈
   
2.基于寄存器架构的计算流程
    mov eax,2 //将eax寄存器的值设置1
    add eax,3 //将eax寄存器的值+3

 

总结:

  基于栈式架构的优缺点:跨平台性,指令集小,但是指令多,执行性能比寄存器差

2.JVM的生命周期

  1.虚拟机启动

  java虚拟机的启动是通过引导类加载器(bootstrap class loader)创建一个初始类(initial calss)来完成的,这个类是由虚拟机的具体实现指定的

  2.虚拟机的运行

  >一个运行的java虚拟机有一个清晰的任务:执行java程序

  >程序开始执行时它才执行,程序执行结束它就停止

  >执行一个所谓的java程序的时候,真正执行的是一个叫做java虚拟机的进程

  3.虚拟机的退出

      

  

 

posted @ 2022-07-11 22:06  努力的达子  阅读(139)  评论(0编辑  收藏  举报