Oop Maps 在 Hotspot VM 中究竟是什么意思
2022-09-03 12:14:21
我从一些文档中读到,Hotspot VM 利用一种名为 Oop Maps 的数据结构来管理 VM 中的所有 OOP。我的问题是,这个Oop Map数据结构是什么时候生成的?在编译时还是在运行时?任何有关这方面的进一步详细文件将非常受欢迎。谢谢你们。
我从一些文档中读到,Hotspot VM 利用一种名为 Oop Maps 的数据结构来管理 VM 中的所有 OOP。我的问题是,这个Oop Map数据结构是什么时候生成的?在编译时还是在运行时?任何有关这方面的进一步详细文件将非常受欢迎。谢谢你们。
OopMap 是一种记录对象引用 (OOP) 在 Java 堆栈上的位置的结构。其主要目的是在 Java 堆栈上查找 GC 根,并在堆内移动对象时更新引用。
有三种类型的OopMaps:
在 GC JVM 期间,遍历所有线程堆栈。每个堆栈都解析为堆栈帧流。帧要么是解释的,要么是编译的,要么是存根的。解释的帧包含有关 Java 方法和 bci(字节码索引)的信息。OopMapCache有助于找到与给定方法和bci相对应的OopMap。编译帧的方法通过指令地址查找发现。