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

Java整数池。为什么?

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

Java整数池。为什么?

它被称为Flyweight模式,用于最小化内存使用。

这些数字很可能会被重复使用,并且类似autobox的类型

Integer
是不可变的(请注意,这样做不仅是针对
Integer
)。缓存它们可以使实例不多,并且也减少了GC(垃圾收集)的工作。

JLS在5.1.7中对此进行了介绍。装箱转换
专门通过说:

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

理想情况下,将给定的原始值p装箱将始终产生相同的参考。实际上,使用现有的实现技术可能不可行。以上规则是务实的妥协。上面的最后一句要求始终将某些通用值装在无法区分的对象中。该实现可以懒惰地或急切地缓存它们。对于其他值,此公式不允许对程序员方面的带框值的身份进行任何假设。这将允许(但不要求)共享部分或全部这些引用。

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



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

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

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