zoukankan      html  css  js  c++  java
  • 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虚拟机的退出过程。

  • 相关阅读:
    JID 2.0 RC4 发布,高性能的 Java 序列化库
    FBReaderJ 1.6.3 发布,Android 电子书阅读器
    Arquillian 1.0.3.Final 发布,单元测试框架
    JavaScript 的宏扩展 Sweet.js
    Hypertable 0.9.6.5 发布,分布式数据库
    JRuby 1.7.0 发布,默认使用 Ruby 1.9 模式
    httppp 1.4.0 发布,HTTP响应时间监控
    Redis 2.6.0 正式版发布,高性能K/V服务器
    OfficeFloor 2.5.0 发布,IoC 框架
    XWiki 4.3 首个里程碑发布
  • 原文地址:https://www.cnblogs.com/gnivor/p/4523320.html
Copyright © 2011-2022 走看看