1

Я пытаюсь запустить приложение Java из пакетного файла с размером кучи 2G, вот так:

java -Xmx2G -XX:MaxPermSize=256M -jar cauldron-1.7.10-1.1236.05.212-server.jar nogui

При запуске этой команды из пакетного файла Windows пытается запустить ее с помощью 32-разрядной JVM, которая ужасно дает сбой, поскольку куча 2G слишком велика для 32-разрядной JVM.

D:\directory>java -Xmx2G -XX:MaxPermSize=256M -jar minecraft_server.1.7.10.jar nogui
Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

Добавление флага -d64 чтобы попытаться форсировать 64-битную JVM, подтверждает, что Windows пытается запустить это в 32-битной JVM.

D:\directory>java -d64 -Xmx2G -XX:MaxPermSize=256M -jar minecraft_server.1.7.10.jar nogui
Error: This Java instance does not support a 64-bit JVM.
Please install the desired version.

Тем не менее, когда я запускаю точно такую же команду из консоли PowerShell, Windows решает использовать 64-битную Java, и все работает отлично.

Я предполагаю, что переменная пути отличается для командного файла и консоли PowerShell.

Какова основная причина этой проблемы, как я могу ее исправить, и как я могу остановить это снова?


Приложение:

Вывод java -debug -version из командного файла:

D:\directory>java -debug -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) Client VM (build 24.45-b08, mixed mode, sharing)

И из PowerShell:

PS D:\ATLauncher_Hacking\install> java -debug -version
java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)

Изменить: Запуск ECHO %PATH% из пакетного файла - я вижу, что C:\Program Files\Java\jre7\bin находится на пути.

0