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

Oop Maps在Hotspot VM中到底意味着什么,第1张

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

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

OopMap共有三种:

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

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



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5499631.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存