Согласитесь с Torlack, во многом это связано с тем, что другие библиотеки DLL загружаются и попадают в определенные места, разбивая объем памяти, который вы можете получить для виртуальной машины, в один большой блок.
Вы можете поработать над WinXP, если у вас есть больше, чем 3G памяти, чтобы переместить некоторые вещи Windows, посмотрите PAE здесь:
http://www.microsoft.com/whdc/system/platform/server/PAE/PAEdrv.mspx
Лучше всего, если вам действительно требуется больше 1,2 ГБ памяти для вашего Java-приложения, это взглянуть на 64-битные окна, Linux или OSX. Если вы используете в своем приложении какие-либо нативные библиотеки, вам придется перекомпилировать их для 64-битных систем, но это будет намного проще, чем пытаться перебазировать библиотеки DLL и т. Д. Для максимизации памяти, которую вы можете получить в 32-битных окнах .
Другой вариант - разделить вашу программу на несколько виртуальных машин и заставить их взаимодействовать друг с другом через RMI, обмен сообщениями или что-то еще. Таким образом, каждая виртуальная машина может иметь некоторое подмножество необходимой памяти. Не зная, что делает ваше приложение, я не уверен, что это поможет каким-либо образом, хотя ...