Java требует непрерывной виртуальной памяти при запуске. В Windows 32-битное приложение запускается в 32-битной эмулируемой среде, поэтому вы не получаете намного больше непрерывной памяти, чем в 32-битной ОС. c.f. в Solaris вы получаете более 3 ГБ виртуальной памяти для 32-битной Java.
Я предлагаю вам использовать 64-битную версию Java, поскольку она будет использовать всю имеющуюся у вас память. Вам все еще нужно иметь свободную память, но большее адресное пространство не страдает от фрагментации.
Кстати: пространство кучи является лишь частью используемой памяти, вам нужна память для общих библиотек, прямой памяти, компонентов графического интерфейса и т. Д.