Что такое Integer Pool в Java?

«Что такое Integer Pool в Java?» — вопрос из категории Java Core, который задают на 22% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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.