Причина кеширования небольших целых чисел, если вы об этом спрашиваете, заключается в том, что многие алгоритмы используют в своих вычислениях небольшие целые числа, поэтому, как правило, стоит избегать накладных расходов на создание объектов для этих значений.
Тогда возникает вопрос, какие целые числа кэшировать. Опять же, говоря в целом, частота, с которой используются постоянные значения, имеет тенденцию к уменьшению по мере увеличения абсолютного значения константы - каждый тратит много времени, используя значения 1, 2 или 10, относительно немногие используют значение 109 очень интенсивно; меньшее количество будет иметь производительность в зависимости от того, как быстро можно получить целое число для 722. Java решила выделить 256 слотов, охватывающих диапазон значений байта со знаком. Это решение могло быть основано на анализе программ, существовавших в то время, но столь же вероятно, что оно было чисто произвольным. Это разумный объем места для инвестиций, к нему можно быстро получить доступ (маска, чтобы узнать, находится ли значение в диапазоне кеша, затем быстрый поиск в таблице для доступа к кешу), и он определенно охватывает наиболее распространенные случаи.
Другими словами, я думаю, что ответ на ваш вопрос таков: «это не так субъективно, как вы думали, но точные границы в значительной степени являются практическим решением ... и экспериментальные доказательства показали, что это было достаточно хорошо. "