Массив Индексы ограничены Integer.MAX_VALUE, а не физическим размером массива.
Следовательно, максимальный размер массива связан с размером типа массива.
byte = 1 byte => max 2 Gb data
char = 2 byte => max 4 Gb data
int = 4 byte => max 8 Gb data
long = 8 byte => max 16 Gb data
Словари - это отдельная история, потому что они часто используют такие методы, как сегменты или внутреннее расположение данных в виде дерева. Поэтому эти «ограничения» обычно не применяются, или вам потребуется еще больше данных для достижения предела.
Short: Integer.MAX_VALUE на самом деле не предел, потому что вам нужно много памяти, чтобы фактически достичь этого предела. Если вы когда-нибудь достигнете этого предела, вы можете подумать об улучшении вашего алгоритма и / или макета данных:)