Oop Maps在Hotspot VM中到底意味着什么

我从一些文档中了解到,Hotspot VM使用称为Oop Maps的数据结构来管理VM中的所有OOP。我的问题是,此Oop

Map数据结构何时生成?在编译时还是在运行时?对此,任何进一步的详细文件将受到欢迎。感谢你们。

回答:

OopMap是一种结构,它记录对象引用(OOP)在Java堆栈上的位置。其主要目的是在Java堆栈中查找GC根目录,并在堆中移动对象时更新引用。

OopMap共有三种:

  1. OopMaps用于 。它们是通过分析字节码流来延迟计算的,即发生GC时。最好的参考是源代码(有很多注释),请参见generateOopMap.cpp。InterpreterOopMaps存储在OopMapCache中。
  2. 用于 OopMaps 。它们是在JIT编译期间生成的,并与编译后的代码一起保存,以便VM可以通过指令地址快速找到堆栈位置和保存对象引用的寄存器。
  3. 用于生成 OopMap 。这些映射是由开发人员(这些运行时存根的作者)手动构建的。

在GC期间,JVM遍历所有线程堆栈。每个堆栈都被解析为堆栈帧的流。框架可以解释,编译或存根。解释的帧包含有关Java方法和bci(字节码索引)的信息。OopMapCache帮助查找与给定方法和bci相对应的OopMap。通过指令地址查找发现编译帧的方法。

以上是 Oop Maps在Hotspot VM中到底意味着什么 的全部内容, 来源链接: utcz.com/qa/430990.html

回到顶部