Skip to content

Integer 缓存池

cxuan edited this page Jun 15, 2020 · 1 revision

Integer 缓存池也就是 IntegerCache ,它是 Integer 的静态内部类。

它的默认值用于缓存 -128 - 127 之间的数字,如果有 -128 - 127 之间的数字的话,使用 new Integer 不用创建对象,会直接从缓存池中取,此操作会减少堆中对象的分配,有利于提高程序的运行效率。

例如创建一个 Integer a = 24,其实是调用 Integer 的 valueOf ,可以通过反编译得出这个结论

然后我们看一下 valueOf 方法

如果在指定缓存池范围内的话,会直接返回缓存的值而不用创建新的 Integer 对象。

缓存的大小可以使用 XX:AutoBoxCacheMax 来指定,在 VM 初始化时,java.lang.Integer.IntegerCache.high 属性会设置和保存在 sun.misc.VM 的私有系统属性中。

Clone this wiki locally