栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

java接口如何在内部实现?(vtables?)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java接口如何在内部实现?(vtables?)

HotSpot
JVM的关键功能是内联缓存。这实际上并不意味着要内联目标方法,而是意味着要在JIT代码中加入一个假设,即以后对虚拟方法或接口方法的每次调用都将以完全相同的实现为目标(即,调用站点是单态的)。在这种情况下,将检查是否编译成假设是否成立(即,目标对象的类型是否与上次相同),然后将控制权直接传递给目标方法-
不使用虚拟表参与其中。如果断言失败,则可以尝试将其转换为大形调用站点(即具有多种可能的类型);如果仍然失败(或者这是第一个调用),则使用vtables(用于虚拟方法)和itables(用于接口)执行常规的长时间查找。

编辑
:热点Wiki上有关于vtable和itable存根的更多详细信息。在多态情况下,它仍将内联缓存版本放入呼叫站点。但是,代码实际上是在vtable或itable中执行查找的存根。每个vtable偏移量(0、1、2,…)都有一个vtable存根。接口调用在给定偏移量查找可扩展对象(如果找到)之前,对可扩展对象数组进行线性搜索。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/452843.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号