Soucis d'exécution d'une commande Java, cause "mémoire" [Résolu/Fermé]

Signaler
-
 PtitZombie - Limace Poilue -
Salutations ! Je suis débutant en VB.NEt et m'amuse à coder un launcher pour serveur minecraft. L'aplication peut lancer un serveur ".exe" ou ".jar". donc pour le ".jar", la commande java suivante est exécutée :

Shell.run("C:\Windows\System32\cmd.exe /K java -Xincgc -Xms512M -Xmx2048M -jar D:\TEMP\server.jar nogui")


Lorsque cette commande est exécutée sur mon PC, la console Windows, au lieu de me lancer mon serveur, me montre l'erreur :

Error ocurred 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.

Avec 8Go de RAM, beaucoup de RAM libre, je trouve cela étonnant... D'autant plus que lorsque j'exécute la MÊME commande (java -Xincgc -Xms512M -Xmx2048M -jar D:\TEMP\server.jar nogui) dans la console directement, le serveur se lance et tout fonctionne...

J'ai même essayé de dire à mon programme d'utiliser le "cmd.exe" présent dans le dossier "C:\windows\SysWOW64" mais même avec ça, il refuse de me laisser lancer mon serveur... et persiste à me dire qu'il ne peut pas créer sa fumisterie...


Mon problème est énoncé, si quelqu'un a les connaissances nécessaires, je serai ravi de l'écouter :)

1 réponse

Messages postés
16339
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mai 2021
2 830
Je pense que l'idéal serait d'utiliser directement le programme java.exe plutôt que de passer par un cmd.exe

Shell.run("C:\Program Files\Java\jre7\bin\java.exe -Xms512m -Xmx2048m ...")

S'il ne peut pas créer 2Go de mémoire c'est peut-être parce que ta version de Java est en 32 bits qui ne peux pas dépasser 1.5Go, alors que les version Java de 64 bits peuvent aller au delà (mais ça c'est un problème Windows plus que Java)

Commence par utiliser des valeurs plus petites (1024m par exemple) afin de voir s'il y a d'autres problèmes avant d'essayer de passer à 2048m.La confiance n'exclut pas le contrôle

Bonsoir =) Merci de m'avoir répondu ! J'ai déja testé avec des valeurs plus petites, il semble que le bouzain s'énerve lorsque je dépasse les 1024Mo de mémoire max.
Lorsque je tente avec :

Shell("C:\Program Files (x86)\Java\jre7\bin\java.exe -Xincgc -Xms512M -Xmx2048M -jar D:\TEMP\server.jar")

Rien ne se passe, même dans les processus : aucun java.exe ou quoi que ce soit d'autre n'est créé...

EDIT : Lorsque j'essaye avec javaw.exe, le même problème survient (could not create virtual machine, machin, bidule, champagne...)

Dois-je commencer à cherche une corde, une lampe, une chaise et une cave pour torturer ce programme ?
J'ai même essayé

Shell("D:\Program Files (x86)\Logiciels\Java\bin\javaw.exe -Xincgc -Xms512M -Xmx2048M -jar D:\TEMP\server.jar")

Car c'est là que j'ai installé la version 64Bits de Java, mais il me renvoie un "Fichier introuvable"... pareil pour java.exe

Si je lui remets le même chemin qu'avant "C:\....") le problème n'est pas axactement le même. Cette fosi ci, je n'ai que :

Error : Could not create the Java Virtual Machine
Roor : A fatal exception has occurred. Program will exit.

Ok. Bon, j'ai mis le bon chemin dans D:\Program Files (x86)\Java\bin\Java.exe


Tout fonctionne, je vais simplement rajouter dans mon programme une localisation du dossier Java 64Bit par l'utilisateur, puis le programme lancera la Java.exe avec la commande correcte. Merci beaucoup =)

PS : le programme n'a pas été maltraité durant les investigations.

PPS : Bonne nuit :)