gpt4 book ai didi

jvm - klassoop 和 instanceklass 之间的真正区别是什么?

转载 作者:行者123 更新时间:2023-12-02 00:47:42 24 4
gpt4 key购买 nike

我看到其中一个描述为“InstanceKlass 是 Java 类的 VM 级别表示”。 ,另一个是“A klassOop is the C++ equivalent of a Java class.”,那么它们之间有什么区别呢?为什么我们需要它们,我们可以将二合一吗? http://hg.openjdk.java.net/jdk7u/jdk7u60/hotspot/file/ba66650acf63/src/share/vm/oops/instanceKlass.hpp http://hg.openjdk.java.net/jdk7u/jdk7u60/hotspot/file/ba66650acf63/src/share/vm/oops/klassOop.hpp

最佳答案

比较 klassOopKlass 会更准确,因为 instanceKlassKlass 的特定后代>.

在 JDK 7 中,类元数据存储在永久生成的 Java 堆中。与 Java Heap 中的所有对象一样,类元数据都有一个对象头。 klassOop 基本上是一个将 C++ Klass 对象包装到 Java 堆对象(也称为 OOP)中的包装器。

     _________________
| |
| mark_word | <-- OOP header
| klass_field |
| _______________ |
|| ||
|| C++ vtbl ptr || <-- InstanceKlass data
|| subtype cache ||
|| instance size ||
|| java mirror ||
|| super ||
|| access_flags ||
|| name ||
|| ... ||
||_______________||
|_________________|

从 JDK 8 开始,不再有永久生成,也不再有 klassOop 实体。所有类元数据都作为普通 C++ 对象存储在 Metaspace 中。

如果您想研究 HotSpot JVM 内部结构,我建议查看 jdk8u而是存储库。

关于jvm - klassoop 和 instanceklass 之间的真正区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42477215/

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