Я читал, макс. размер "кучи" в Windows на 32 бита является ~1.5GB, который является вследствие того, что JVM требует непрерывной памяти. Кто-то может объяснить понятие "непрерывной памяти" и почему у Вас только есть макс. 1.5 ГБ в Windows?
Во-вторых, каков затем макс. размер "кучи" в Windows на 64 бита и почему это отличается, чем, что доступно на 32 битах?
32-битная/64-битная часть не связана с Java
Оказывается, что на места памяти в 32-битной системе ссылаются 32-битные беззнаковые целые числа. Это позволяет использовать до 2^32 возможных мест памяти. Поскольку каждое место хранит 1 байт, вы получаете 2^32 байта или 4 ГБ, если хотите.
В 64-битной системе есть 2^64 места, или 16 экзабайт.
Теперь, в Windows, непрерывная часть становится большой проблемой, но это только то, как Windows делает вещи. Идея заключается в том, что вам нужно иметь целый "непрерывный" диапазон для вашей кучи. К сожалению, Windows выделяет часть памяти где-то посередине. В основном, для выделения кучи остается половина левой стороны или половина правой стороны, примерно 1,5-2 ГБ.
Посмотрите этот вопрос для получения более подробной информации о 32 и 64 бит.
Редактирование: Спасибо mrjoltcola за префикс exa!
Непрерывный просто означает «без промежутков», один длинный сегмент. Количество ограничено тем, насколько большой сегмент ОС может отобразить для вашего процесса. Требуется ли Java непрерывная куча или нет - это проблема реализации, специфичная для JVM, и может не существовать для других виртуальных машин.
Непрерывная память не является проблемой, ограничивая использование windows только 1.2 ГБ кучи. Даже если определены min/max кучи, JVM при запуске займет максимальную кучу из системной памяти. Затем она будет ссылаться только на min кучу в пределах занятой системной памяти, пока ей не потребуется расширение. В большинстве импликаций для запуска JVM требуется непрерывная память максимальной кучи для улучшения производительности.
Как Маркус объяснил выше, предел 32-битного аппаратного обеспечения составляет 4 ГБ для одного процесса (потока). Каждая операционная система использует эти 4 ГБ по-разному. 4 ГБ в основном делятся на пространство ядра и пространство пользователя. В 32-битной windows максимальное пространство пользователя составляет около 1,5 ГБ. Существует возможность загрузки windows с ключом /3GB, чтобы иметь больше пользовательского пространства.