-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
的私有系统属性中。