Ответ 1
Вы не можете сделать это, поскольку JVM необходимо распределить всю кучу в один непрерывный кусок, что может быть невозможно из-за фрагментации памяти. Подробнее см. в статье о часто задаваемых вопросах.
Смотрите также эту картинку:
Как вы можете заметить, общая память процесса - это не просто размер кучи, что значительно облегчает достижение ограничения на 2 ГБ ОС.
Фактическая куча, которая может использоваться, зависит от конфигурации ОС и от других приложений, которые работают (библиотеки DLL с крючками вводят в пространство процесса и вызывают дополнительную фрагментацию). Обычно это где-то между 512M и 1G, но может быть выше в чистой системе.