Ответ
Integer Pool (кэш целых чисел) — это механизм в Java для оптимизации памяти, который кэширует объекты Integer для часто используемых значений в диапазоне от -128 до 127.
Как это работает:
При автоупаковке (например, Integer a = 127;) или вызове Integer.valueOf() JVM возвращает один и тот же кэшированный объект для значений внутри пула, вместо создания нового.
Пример:
Integer a = 127;
Integer b = 127;
System.out.println(a == b); // true — один объект из пула
Integer c = 128;
Integer d = 128;
System.out.println(c == d); // false — создаются новые объекты
Важные детали:
- Механизм работает только для
Integer.valueOf()и автоупаковки. - Конструктор
new Integer(...)всегда создаёт новый объект, минуя пул. - Верхнюю границу пула можно увеличить через JVM-параметр:
-Djava.lang.Integer.IntegerCache.high=200. - Аналогичные пулы существуют для
Byte,Short,Long(в том же диапазоне),Character(от 0 до 127) иBoolean.