• Java虚拟机--虚拟机编译器


    void sspin() {
      short i;
      for (i = 0; i < 100; i++) {
          ; // Loop body is empty 
      }
    }

    Method void sspin()
    0 iconst_0  int型常量值0进栈
    1 istore_1  将栈顶int型数值存入指定的局部变量
    2 goto 10  
    5 iload_1       指定的int型局部变量进栈 
    6 iconst_1     int型常量值1进栈
    7 iadd           栈顶两int型数值相加,并且结果进栈
    8 i2s             栈顶int值强转short值,并且结果进栈
    9 istore_1     将栈顶int型数值存入指定的局部变量
    10 iload_1     指定的int型局部变量进栈
    11 bipush 100  将一个byte型常量值推送至栈顶
    13 if_icmplt 5       比较栈顶两int型数值大小,当结果小于0时跳转
    16 return

    Java虚拟机的启动与退出:
    1. 虚拟机启动
    Java虚拟机的启动是通过引导类加载器(Bootstrap Class Loader §5.3.1)创建一个初始类(Initial Class)来完成,这个类是由虚拟机的具体实现指定。紧接着,Java虚拟机链接这个初始类,初始化并调用它的public void main(String[])方法。之后的整个执行过程都是由对此方法的调用开始。执行main方法中的Java虚拟机指令可能会导致Java虚拟机链接另外的一些类或接口,也可能会调用另外的方法。
    可能在某种Java虚拟机的实现上,初始类会作为命令行参数被提供给虚拟机。当然,虚拟机实现也可以利用一个初始类让类加载器依次加载整个应用。初始类当然也可以选择组合上述的方式来工作。

    2. Java虚拟机退出
    Java虚拟机的退出条件一般是:某些线程调用Runtime类或System类的exit方法,或是Runtime类的halt方法,并且Java安全管理器也允许这些exit或halt操作。
    除此之外,在JNI(Java Native Interface)规范中还描述了当使用JNI API来加载和卸载(Load & Unload)Java虚拟机时,Java虚拟机的退出过程。

  • 相关阅读:
    Hacker(22)----解除系统中的密码
    Hacker(21)----密码攻防之加密与解密基础
    Hacker(20)----手动修复Windows系统漏洞
    Hacker(19)----检测Windows系统漏洞
    Hacker(18)----了解Windows系统漏洞
    Hacker(17)----认识Windows系统漏洞
    Linux通过nfs挂载根文件系统失败:VFS: Unable to mount root fs via NFS, trying floppy.
    恶补各种知识(编程基础篇)
    恶补各种知识(操作系统篇)
    恶补各种知识(查找排序篇)
  • 原文地址:https://www.cnblogs.com/gnivor/p/4523320.html
Copyright © 2020-2023  润新知