java holder_java – HashMap中Holder类的用途是什么?

Java7u6引入了一种替代哈希函数,旨在提高大量键哈希冲突时Map的性能,该优化在Java8中被移除,取而代之的是使用平衡树存储高冲突键值对以提升性能。可以通过设置系统属性`jdk.map.althashing.threshold`来启用或调整这个优化,如设为512。然而,这个特性是OracleHashMap的内部实现细节,开发者无法直接使用,只能通过系统属性间接影响。
摘要由CSDN通过智能技术生成

这与Java 7u6的改进有关,并已在Java 8中删除.

相关文件:

The alternative hash function improves the performance of these map

implementations when a large number of key hash collisions are

encountered.

For Java SE 7u6, this alternative hash function is implemented as

follows:

The alternative hash function is only applied to maps with a capacity

larger than a specified threshold size. By default, the threshold is

-1. This value disables the alternative hash function. To enable the

alternative hash function, set the jdk.map.althashing.threshold

system property to a different value. The recommended value is 512.

Setting this system property to 512 causes all maps with a capacity

larger than 512 entries to use the alternative hash function. You can

set this system property to 0, which causes all maps to use the

alternative hash function.

The alternative String hash function added in 7u6 has been removed

from JDK 8, along with the jdk.map.althashing.threshold system

property. Instead, hash bins containing a large number of colliding

keys improve performance by storing their entries in a balanced tree

instead of a linked list.

现在,回答你的问题:

How and when we have to use that class?

是什么让你认为你应该使用它?这是一个私人课程without any public docs,所以你不必关心它.这是Oracle HashMap的实现细节,您无法直接使用它.您可以间接使用它的唯一方法是通过jdk.map.althashing.threshold系统属性.

为什么Oracle的工程师会使用这样的持有者?因为类加载顺序. VM很难在彼此有很多依赖关系的情况下加载所有类,它可能会被卡住.因此,所有内部类的开发人员都要确保他们没有使用可能尚未加载的类的方法/属性/可能导致加载顺序问题.

这是一个这样的帮助程序,它只在加载所有其他类并且VM完全启动后初始化一个值.只有在第一次访问类时才会初始化holder中的值,并且使用sun.misc.VM.isBooted()调用屏蔽此访问.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值