• 8.1.13 _quick 指令


    8.1.13 _quick 指令

    Java虚拟机的第一版规范中描述了一种用来加速字节码解释的技术,Sun早期的一种java虚拟机实现中曾经使用过它。这种方案是,如果常量池入口已经被解析过,使用常量池人口的操 作码会被一个“_quick”操作码取代。当虚拟机遇到一个_quick指令时,它就知道常量池人口已 经被解析过了,所以这条指令可以执行得更快。

    Java虚拟机的核心指令集包含200条单字节操作码,它们都可以在附录A中找到在class文 件中只会见到这200条操作码。使用“_quick”技术的虛拟机实现内部还另外使用25条“_quick”单字节操作码。

    举例来说,当使用_quick技术的虚拟机解析一个ldc指令(操作码0x12 )引用的常量池人口时,它在字节码流中用ldc_quick指令(操作码Oxcb )替換ldc操作码字节。在Sun的早期虚拟机 中,这项技术是属于直接引用替换符号引用这个操作的一部分。

    除了用_quick操作码覆盖原来的普通操作码之外,使用_quick技术的虚拟机对某些指令还会用表示直接引用的数据覆盖指令的操作数。比如,除了把invokevirtual操作码替换成 invokcvirtual_quick之外,虚拟机还把方法表偏移量和参数的个数放入每个invokevirtual指令后面 的两个操作数字节中。在invokevirtual_quick操作码后面的字节码流中直接用方法表偏移量,节约了在解析过的常量池入口中査找偏移量的时间。

    8.1.14示例:Salutation程序的连接

    Java连接模型的例子如下面的Salutation程序:

  • 相关阅读:
    footer在最低显示
    jQuery toast message 地址 使用
    linux 获取经过N层Nginx转发的访问来源真实IP
    Java Json格式的字符串转变对象
    多个机器获取微信access-token导致的有效性问题
    站点技术---301重定向
    C++技术问题总结-第8篇 STL内存池是怎么实现的
    IIS中遇到无法预览的问题(HTTP 错误 401.3
    梯度下降深入浅出
    COM-IE-(2)
  • 原文地址:https://www.cnblogs.com/mongotea/p/11979755.html
Copyright © 2020-2023  润新知