难得今生共此时 2019-12-30 09:02 采纳率: 0%
浏览 236

如何计算静态变量的内存地址相对其Class对象内存地址的偏移量呢

图片说明

图片说明

我在一篇文章中看到这么一段话,我想验证一下
对于HotSpot VM的对象模型,静态字段的“偏移量”就是:

  • JDK 6或之前:相对该类对应的InstanceKlass(实际上是包装InstanceKlass的klassOopDesc)对象起始位置的偏移量
  • JDK 7或之后:相对该类对应的java.lang.Class对象起始位置的偏移量。

希望大大们能帮忙解答,感激不尽

  • 写回答

1条回答 默认 最新

  • Kwan的解忧杂货铺 Java领域优质创作者 2023-12-03 16:38
    关注

    这段话涉及到Java HotSpot虚拟机中对象模型的一些变化。在Java HotSpot虚拟机中,对象的布局与实现有关,不同的版本可能会有一些微小的变化。

    1. JDK 6 或之前:

      • 对于静态字段的偏移量,相对于该类对应的InstanceKlass对象的起始位置。
      • InstanceKlass是一个内部对象,用于表示Java类,而且在JDK 6及之前的版本中,静态字段的偏移量是相对于InstanceKlass对象的起始位置计算的。
    2. JDK 7 或之后:

      • 对于静态字段的偏移量,相对于该类对应的java.lang.Class对象的起始位置。
      • 在JDK 7以及之后的版本中,HotSpot VM进行了一些优化和改进,静态字段的偏移量计算相对于java.lang.Class对象而不是InstanceKlass对象。

    需要注意的是,这些细节可能会受到具体JVM实现版本和配置的影响。此外,这种细微的变化通常在更底层,对于普通Java开发者来说,并不需要深入了解这些底层细节。这样的信息通常在进行高级性能调优或JVM内部开发时才会涉及到。

    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题