gpt4 book ai didi

java - JVM如何在运行时知道对象的类

转载 作者:搜寻专家 更新时间:2023-11-01 01:58:23 24 4
gpt4 key购买 nike

jvm如何在运行时知道一个对象是哪个类的实例。我知道我们可以使用 getClass 方法来获取类名,但是 getClass 方法是如何工作的呢?谢谢,普拉文。

最佳答案

答案?魔法!

不,说真的,它是实现定义的,并且 JVM 的实现不需要使用单一的简单技术,例如将类作为引用存储在实例数据中常量偏移量的字段中。它所需要做的就是确保 getClass 方法可观察到如记录的那样工作。例如,使用 escape analysis ,JVM 可能会在堆上静态分配一个实例,因为它知道该实例的生命周期不会超过堆栈帧。在这种情况下,它可能会选择将 getClass() 调用转换为直接加载 Class 实例,而不是根本调用方法!类似地,由于 getClass() 在逻辑上是一个虚方法(我知道它是最终的,但它的返回值在任何给定类加载器的类的所有实例中都是常量,但对于每个不同的类都不同,就好像它是一个返回常量值的虚拟),它可能会经历与 inline caching 类似的优化.

关于java - JVM如何在运行时知道对象的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2723581/

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