栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java为什么整数类的缓存值在-128到127之间?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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=<size>
选项控制。

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/431859.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号