Если вы хотите использовать 32-битные ссылки, ваша куча ограничена 32 ГБ.
Однако, если вы хотите использовать 64-битные ссылки, размер, вероятно, будет ограничен вашей ОС, так же как и для 32-битной JVM. например в 32-битной Windows это от 1,2 до 1,5 ГБ.
Примечание: вы хотите, чтобы ваша куча JVM помещалась в основную память, в идеале внутри одного региона NUMA. Это примерно 1 ТБ на больших машинах. Если ваша JVM охватывает области NUMA, доступ к памяти и GC, в частности, займет гораздо больше времени. Если ваша куча JVM начнет подмену, это может занять несколько часов, чтобы GC, или даже сделать вашу машину непригодной для использования, поскольку он перебивает диск подкачки.
Примечание. Вы можете получить доступ к большим объемам памяти и отображаемой памяти, даже если вы используете 32-битные ссылки в своей куче. т. е. использовать значительно больше 32 ГБ.
Сжатые упы в JVM Hotspot
Сжатые операции представляют управляемые указатели (во многих, но не во всех местах JVM) как 32-битные значения, которые должны быть масштабированы с коэффициентом 8 и добавлены к 64-битному базовому адресу, чтобы найти объект, к которому они относятся. Это позволяет приложениям адресовать до четырех миллиардов объектов (не байтов) или размер кучи до 32 ГБ. В то же время компактность структуры данных является конкурентоспособной с режимом ILP32.