Чтобы ответить на этот вопрос, важно, находится ли Java VM в режиме КЛИЕНТА или СЕРВЕРА.
Вы можете указать параметры "-client" или "-server". В противном случае Java использует внутренние правила; в основном win32 всегда клиент, а Linux всегда сервер, но смотрите таблицу здесь:
http://docs.oracle.com/javase/6/docs/technotes/guides/vm/server-class.html
Документ Sun / Oracle jre6u18 сообщает клиенту: виртуальная машина получает половину физической памяти, если машина имеет <= 192 МБ; 1/4 памяти, если машина имеет <= 1 Гб; максимум 256 Мб. В моем тесте на 32-битной системе WindowsXP с физическим объемом 2 ГБ Java выделил 256 МБ, что соответствует документу. </p>
Документ Sun / Oracle jre6u18 говорит о сервере: то же самое, что и клиент, затем добавляет запутанный язык: для 32-битной JVM максимальное значение по умолчанию составляет 1 ГБ, а для 64-битной JVM значение по умолчанию составляет 32 ГБ. В моем тесте на 64-битной машине Linux с физическим объемом 8 ГБ Java выделяет 2 ГБ, что составляет 1/4 физического; на 64-битной машине Linux с 128 ГБ физической Java выделяет 32 ГБ, опять же 1/4 физической.
Спасибо этому ТАКому посту за руководство:
Определение машины серверного класса недавно изменилось?