我从一些文档中读到,Hotspot VM利用名为Oop Maps的数据结构来管理VM中的所有OOP。我的问题是,这个Oop Map数据结构何时生成?在编译时还是运行时?任何有关此问题的进一步详细文件都将受到欢迎。谢谢你们。
答案 0 :(得分:22)
OopMap是一种记录对象引用(OOP)位于Java堆栈中的结构。它的主要目的是在Java堆栈上找到GC根,并在堆中移动对象时更新引用。
有三种OopMaps:
在GC期间,JVM遍历所有线程堆栈。每个堆栈都被解析为堆栈帧流。帧可以是解释或编译的,也可以是存根。解释的帧包含有关Java方法和bci(字节码索引)的信息。 OopMapCache有助于找到与给定方法和bci相对应的OopMap。通过指令地址查找发现编译帧的方法。