gpt4 book ai didi

java - HotSpot VM 内联方法的条件

转载 作者:行者123 更新时间:2023-11-30 04:06:48 26 4
gpt4 key购买 nike

我正在阅读 HotSpot VM 应用的优化技术,并发现 this presentation by Oracle其中列出了 HotSpot VM 尝试内联方法调用时的三种可能条件:

  1. Devirtualization (Prove there's only one target method)
  2. Monomorphic inline caching
  3. Profile-driven inline caching

通过搜索互联网,我相信我明白这意味着以下内容:

  1. VM“证明”某个类型当前没有子类型。因此,虚拟方法调用可以转换为非虚拟方法调用,从而允许内联方法的代码。添加了一个保护条件,用于检查执行内联后是否未加载任何子类型。

  2. 观察到方法总是在特定调用站点的单一类型上调用。 (额外问题:Java 是否支持多态内联缓存?)这允许执行乐观内联,其中保护条件检查类型是否不是缓存中表示的类型。

  3. 我不知道那是什么。

我的问题是:内联方法调用还有其他主要原因吗?我的研究正确吗?什么是配置文件驱动的内联缓存?

最佳答案

一个类有多少个子类并不重要,唯一重要的是从给定的代码行可以调用多少个方法。例如一个方法可以在四个类中有两个实现,但如果只调用一个,则就好像这些方法只有一个实现。

根据可以调用的实现数量了解成本。 Performance of inlined virtual method invocations in Java

配置文件驱动的内联很可能是基于实际调用的方法进行内联的。

关于java - HotSpot VM 内联方法的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20573773/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com