java整数缓存 修改_Java为什么整数类的缓存值在-128到127之间?

小编典典

只是想知道,为什么在-128和127之间?

可能会缓存更大范围的整数,但是至少必须缓存-128到127之间的整数,因为它是Java语言规范(强调我的)所要求的:

如果装箱的值p为true,false,字节或\ u0000到\ u007f范围内的char 或-128至127(含)之间的int或short数字,则令r1和r2为以下结果p的任何两次拳击转换。r1 == r2总是这样。

在同一段中解释了此要求的基本原理:

理想情况下,给定原始值p装箱将始终产生相同的参考。实际上,使用现有的实现技术可能不可行。以上规则是一种务实的妥协。上面的最后一个子句要求始终将某些通用值装在无法区分的对象中。[…]

这确保了在大多数情况下,行为将是理想的,而不会造成不必要的性能损失,尤其是在小型设备上。例如,较少内存限制的实现可能会缓存所有char和short值以及-32K到+ 32K范围内的int和long值。

如何缓存超出此范围的其他值?

你可以使用-XX:AutoBoxCacheMaxJVM选项,但未在可用的Hotspot JVM Options列表中真正进行记录。但是,它在第Integer590行附近的类中的注释中提到:

高速缓存的大小可由该-XX:AutoBoxCacheMax=选项控制。

请注意,这是特定于实现的,并且在其他JVM上可能可用或不可用。

2020-03-01

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值