难得今生共此时 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内部开发时才会涉及到。

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!