java Object的hashCode方法怎么使用(hashcode,java,object,开发技术)

时间:2024-05-05 02:34:40 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    java%C2%A0Object%E7%9A%84hashCode%E6%96%B9%E6%B3%95%E6%80%8E%E4%B9%88%E4%BD%BF%E7%94%A8

在为重写hashCode方法的时候,看到hashCode打印出的数据像是一个地址值,很是好奇。

加之最近在研读jvm源码,特此一探究竟,看看在hotspot中hashCode究竟是如何实现的。

通过官产jdk的Object.class的源码, 发现hashCode被native修饰. 因此这个方法应该是在jvm中通过c/c++实现

首先观察Object.java对应的Object.c代码

进一步进入到jvm.h文件中, 这个文件中包含了很多java调用native方法的接口

进入到ObjectSynchronizer::FastHashCode

生成hashCode的方法get_next_hash, 可以支持通过参数配置不同的生成hashCode策略

前面以及提交到hashCode生成后, 是存储在markword中, 我们在深入看一下这个markword

通过-XX:hashCode=2这种形式, 可以验证上述的5中hashCode生成策略

在64位jvm中, hashCode最大占用31个bit; 32位jvm中, hashCode最大占用25个bit

hashCode一共有六种生成策略

默认策略采用策略6, 在globals.hpp文件中定义

本文:java Object的hashCode方法怎么使用的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:如何用C语言实现圣诞树下一篇:

7 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18