A voir également:
- Java heap space
- Java.lang.outofmemoryerror: java heap space - Meilleures réponses
- Exception in thread "main" java.lang.outofmemoryerror: java heap space - Meilleures réponses
- Java.lang.OutOfMemoryError: Java heap space ✓ - Forum - Java
- Comment résoudre "Java heap space" ✓ - Forum - Programmation
- Problème Java Heap Space ✓ - Forum - Java
- Eclipse java heap space ✓ - Forum - Android
- Exception in thread "main" java.lang.outofmemoryerror: java heap space ✓ - Forum - Java
9 réponses
KX
- Messages postés
- 16307
- Date d'inscription
- samedi 31 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 15 avril 2021
Bonjour,
Ouvre jvisualvm.exe (fourni dans le JDK) puis lances ton programme comme d'habitude, tu vas voir apparaître dans Visual VM le process de ton application, ouvre le, cela va te donner davantage d'informations sur la vie de ton programme (mémoire, threads actifs, garbage collector, etc.)
Ouvre jvisualvm.exe (fourni dans le JDK) puis lances ton programme comme d'habitude, tu vas voir apparaître dans Visual VM le process de ton application, ouvre le, cela va te donner davantage d'informations sur la vie de ton programme (mémoire, threads actifs, garbage collector, etc.)
Ezekhx
- Messages postés
- 73
- Date d'inscription
- jeudi 29 juin 2017
- Statut
- Membre
- Dernière intervention
- 25 août 2017
Voilà ce que ça me donne ! 
Qu'est ce que ça veux dire selon toi ?

Qu'est ce que ça veux dire selon toi ?
KX
- Messages postés
- 16307
- Date d'inscription
- samedi 31 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 15 avril 2021
- Messages postés
- 73
- Date d'inscription
- jeudi 29 juin 2017
- Statut
- Membre
- Dernière intervention
- 25 août 2017
Dans ta description tu parles d'un RunAll.exe
Un programme Java ne devrait pas être en .exe et le fait qu'il le soit signifie que ton programme n'est pas complètement un programme Java, donc tout ce qu'il devrait être possible de faire normalement ne l'est peut-être pas dans ton cas.
Il faudrait en savoir plus sur ton programme pour savoir ce qui relève du Java et ce qui ne l'est pas et donc non modifiable...
Un programme Java ne devrait pas être en .exe et le fait qu'il le soit signifie que ton programme n'est pas complètement un programme Java, donc tout ce qu'il devrait être possible de faire normalement ne l'est peut-être pas dans ton cas.
Il faudrait en savoir plus sur ton programme pour savoir ce qui relève du Java et ce qui ne l'est pas et donc non modifiable...
Ezekhx
- Messages postés
- 73
- Date d'inscription
- jeudi 29 juin 2017
- Statut
- Membre
- Dernière intervention
- 25 août 2017
- Messages postés
- 16307
- Date d'inscription
- samedi 31 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 15 avril 2021
Ce sont des fichiers que j'ai mis dans MySQL (j'ai créé une database) et ça m'a donné un dossier avec pleins de fichiers. Quels screens faudrait-il que je te donne pour que tu puisses m'aider à résoudre le problème ?
KX
- Messages postés
- 16307
- Date d'inscription
- samedi 31 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 15 avril 2021
- Messages postés
- 73
- Date d'inscription
- jeudi 29 juin 2017
- Statut
- Membre
- Dernière intervention
- 25 août 2017
"quand je mets la fonction -Xmx3072M, ça ne fixe pas mon problème"
Je l'ai expliqué plus haut :
Ton paramétrage à 3Go n'a affecté que la quantité de mémoire allouée à la JVM, pas celle que la JVM alloue à ton programme.
Je l'ai expliqué plus haut :
Ton paramétrage à 3Go n'a affecté que la quantité de mémoire allouée à la JVM, pas celle que la JVM alloue à ton programme.
Ezekhx
- Messages postés
- 73
- Date d'inscription
- jeudi 29 juin 2017
- Statut
- Membre
- Dernière intervention
- 25 août 2017
Vu qu'il plante quand il doit charger les "Mobs", je pense que le problème vient de l'un ou de ces dossiers : 

KX
- Messages postés
- 16307
- Date d'inscription
- samedi 31 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 15 avril 2021
Un programme qui plante parce qu'il n'a plus de mémoire pourrait planter à n'importe quel moment même sur l'opération la plus insignifiante, ce sera la goutte d'eau qui fait déborder le vase.
Le but du jeu ici ça va être de lui trouver un vase plus grand...
Si tu as accès aux fichiers .class c'est bon signe pour toi, on pourrait lancer le programme Java sans passer par le RunAll.exe... est-ce qu'il y a d'autres fichiers au niveau du RunAll qui permettrait de savoir comment est démarré le programme (des .bat ou .cmd par exemple)
Le but du jeu ici ça va être de lui trouver un vase plus grand...
Si tu as accès aux fichiers .class c'est bon signe pour toi, on pourrait lancer le programme Java sans passer par le RunAll.exe... est-ce qu'il y a d'autres fichiers au niveau du RunAll qui permettrait de savoir comment est démarré le programme (des .bat ou .cmd par exemple)
Ezekhx
- Messages postés
- 73
- Date d'inscription
- jeudi 29 juin 2017
- Statut
- Membre
- Dernière intervention
- 25 août 2017
Voilà le dossier où se situe le runall 



et voilà, quand je fais le chemin jusqu'aux dossier où s'exécutent les .exe, j'atterris ici.
Que voudrais-tu voir ?
Et merci pour la métaphore, je comprends mieux maintenant ^^




et voilà, quand je fais le chemin jusqu'aux dossier où s'exécutent les .exe, j'atterris ici.
Que voudrais-tu voir ?
Et merci pour la métaphore, je comprends mieux maintenant ^^
KX
- Messages postés
- 16307
- Date d'inscription
- samedi 31 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 15 avril 2021
Le premier fichier RunAll.bat est intéressant.
Déjà tu vas diminuer la valeur
Ensuite tu vas rajouter sur la même ligne
Et tu vas lancer le programme directement en lançant le .bat (sans le .exe)
Je t'invites aussi à ouvrir jvisualvm comme tout à l'heure pour suivre l'évolution de la mémoire, ici je donnes des valeurs un peu au pif, qu'il faudra sûrement ajuster.
Déjà tu vas diminuer la valeur
4000mà
512mparce que ça n'a aucun sens.
Ensuite tu vas rajouter sur la même ligne
-Xms512m -Xmx2048m
Et tu vas lancer le programme directement en lançant le .bat (sans le .exe)
Je t'invites aussi à ouvrir jvisualvm comme tout à l'heure pour suivre l'évolution de la mémoire, ici je donnes des valeurs un peu au pif, qu'il faudra sûrement ajuster.
Ezekhx
- Messages postés
- 73
- Date d'inscription
- jeudi 29 juin 2017
- Statut
- Membre
- Dernière intervention
- 25 août 2017

J'ai fait ça et quand je l'exécute, il se ferme tout de suite...
Ensuite j'ai retiré du coup le -Xms512m -Xmx2048m, et ça me refait comme au début.
Est-ce que j'ai fait une erreur ?
Et j'ai pas compris l'histoire du .bat, tu veux dire que je lance juste le hoertje ?
KX
- Messages postés
- 16307
- Date d'inscription
- samedi 31 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 15 avril 2021
Je ne sais pas ce que c'est hoertje...
Les deux options que je t'ai demandé de rajouter, mets les avant le nom de la classe GameServer.StartGameServer
Et pour éviter que ça s'ouvre et que ça se ferme, démarre ton .bat depuis une invite de commande.
Sachant que si c'est bien fait, peut-être qu'avec le .exe ça marcherait quand même...
Les deux options que je t'ai demandé de rajouter, mets les avant le nom de la classe GameServer.StartGameServer
Et pour éviter que ça s'ouvre et que ça se ferme, démarre ton .bat depuis une invite de commande.
Sachant que si c'est bien fait, peut-être qu'avec le .exe ça marcherait quand même...
Ezekhx
- Messages postés
- 73
- Date d'inscription
- jeudi 29 juin 2017
- Statut
- Membre
- Dernière intervention
- 25 août 2017
- Messages postés
- 16307
- Date d'inscription
- samedi 31 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 15 avril 2021
J'ai essayé de le placer où tu me l'as dit (avant Game server), ça ne fonctionne pas...
Comment est-ce que je le démarre avec un .bat ? Je rename juste en .bat au lieu du .exe ?
Comment est-ce que je le démarre avec un .bat ? Je rename juste en .bat au lieu du .exe ?
KX
- Messages postés
- 16307
- Date d'inscription
- samedi 31 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 15 avril 2021
- Messages postés
- 73
- Date d'inscription
- jeudi 29 juin 2017
- Statut
- Membre
- Dernière intervention
- 25 août 2017
"Comment est-ce que je le démarre avec un .bat ?"
Vu ton impression écran tu ne vois pas les extensions de tes fichiers, j'ai donc l'impression que tu n'as jamais eu de .exe, ce que tu appelles RunAll.exe c'est en fait le RunAll.bat que tu édites avec NotePad++
Bref, cliques dessus comme avant, sinon lances le depuis une invite de commandes.
PS. N'oublies pas d'enregistrer le fichier dans NotePad++ (sur ton impression écran ce n'est pas le cas...)
Vu ton impression écran tu ne vois pas les extensions de tes fichiers, j'ai donc l'impression que tu n'as jamais eu de .exe, ce que tu appelles RunAll.exe c'est en fait le RunAll.bat que tu édites avec NotePad++
Bref, cliques dessus comme avant, sinon lances le depuis une invite de commandes.
PS. N'oublies pas d'enregistrer le fichier dans NotePad++ (sur ton impression écran ce n'est pas le cas...)
Ezekhx
- Messages postés
- 73
- Date d'inscription
- jeudi 29 juin 2017
- Statut
- Membre
- Dernière intervention
- 25 août 2017
Je l'ai bien enregistré ! Et après ça me l'a quitté tout de suite.
Oui j'utilise notepad++, donc ça doit être des .bat comme tu le dis ^^
Et je vais essayer avec l'invite de commandes !
D'autres idées ou pas pour essayer de choper un vase plus grand ? ^^
Oui j'utilise notepad++, donc ça doit être des .bat comme tu le dis ^^
Et je vais essayer avec l'invite de commandes !
D'autres idées ou pas pour essayer de choper un vase plus grand ? ^^
KX
- Messages postés
- 16307
- Date d'inscription
- samedi 31 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 15 avril 2021
- Messages postés
- 73
- Date d'inscription
- jeudi 29 juin 2017
- Statut
- Membre
- Dernière intervention
- 25 août 2017
Il faudrait faire comme tout à l'heure, ouvrir JVisualVM et suivre le graphe de mémoire pour savoir s'il a pris en compte ton paramétrage.
Ezekhx
- Messages postés
- 73
- Date d'inscription
- jeudi 29 juin 2017
- Statut
- Membre
- Dernière intervention
- 25 août 2017

Voilà ce qu'il se passe sur Visual avec le programme où j'ai changé 4000m par 512m !
KX
- Messages postés
- 16307
- Date d'inscription
- samedi 31 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 15 avril 2021
- Messages postés
- 73
- Date d'inscription
- jeudi 29 juin 2017
- Statut
- Membre
- Dernière intervention
- 25 août 2017
"ça se ferme automatiquement" : lances le depuis une invite de commande, sinon tu ne peux pas voir les messages d'erreurs qui s'affichent !
Ezekhx
- Messages postés
- 73
- Date d'inscription
- jeudi 29 juin 2017
- Statut
- Membre
- Dernière intervention
- 25 août 2017
Comment je fais pour le lancer depuis une invite de commande ? Le chemin jusqu'au RunAll étant C:\Users\Etienne\Desktop\GMH Core+Database+Website+Client\GMH Core+Database+Website+Client\Core\GMH puis du coup RunAll.bat
KX
- Messages postés
- 16307
- Date d'inscription
- samedi 31 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 15 avril 2021
- Messages postés
- 73
- Date d'inscription
- jeudi 29 juin 2017
- Statut
- Membre
- Dernière intervention
- 25 août 2017
Tu ouvres une invites de commandes, tu fais
cd C:\...\GMHpuis
RunAll.bat...
Ezekhx
- Messages postés
- 73
- Date d'inscription
- jeudi 29 juin 2017
- Statut
- Membre
- Dernière intervention
- 25 août 2017
Quand je lance le RunAll.bat, voilà sur quoi je tombe au début, jusqu'au fameux message d'erreur. Est-ce que la première ligne te paraît suspecte ? 

KX
- Messages postés
- 16307
- Date d'inscription
- samedi 31 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 15 avril 2021
La première ligne est normale, l'architecture de la JVM a changé en Java 8 et il n'y a plus de permgen (la mémoire secondaire) mais ça ne va pas te changer grand chose ton problème est sur la mémoire principale.
Par contre du coup tu peux complètement virer l'option à 4000m, elle ne sert à rien si tu es en Java 8... la question étant de savoir si ce n'est pas un peu risqué de vouloir faire tourner un programme qui a 10 ans avec Java 8 pour lequel il n'est peut être pas compatible.
Mais ça, ce sera d'autres erreurs plus tard...
Par contre du coup tu peux complètement virer l'option à 4000m, elle ne sert à rien si tu es en Java 8... la question étant de savoir si ce n'est pas un peu risqué de vouloir faire tourner un programme qui a 10 ans avec Java 8 pour lequel il n'est peut être pas compatible.
Mais ça, ce sera d'autres erreurs plus tard...
Ezekhx
- Messages postés
- 73
- Date d'inscription
- jeudi 29 juin 2017
- Statut
- Membre
- Dernière intervention
- 25 août 2017
Le programme a été modifié par d'autres personnes qui eux-mêmes ont voulu faire un serveur il y a 3 ans, donc tout date de y a 3 ans. Mais ils ont abandonné, et ont remis les fichiers modifiés sur Internet !
Ezekhx
- Messages postés
- 73
- Date d'inscription
- jeudi 29 juin 2017
- Statut
- Membre
- Dernière intervention
- 25 août 2017
Avec le RunAll.bat non modifié 
Avec les Xms et Xmx
Sans le Xms et le Xmx mais avec le Gameserver2

Avec les Xms et Xmx

Sans le Xms et le Xmx mais avec le Gameserver2

Ezekhx
- Messages postés
- 73
- Date d'inscription
- jeudi 29 juin 2017
- Statut
- Membre
- Dernière intervention
- 25 août 2017
KX, j'ai un autre problème pour toi a présent, si tu es toujours disponible, toujours lié à ce fameux jeu. A présent que le "serveur" est lancé, le client lui refuse de se connecter au serveur (il refuse de le lancer, ou ne trouve pas le serveur), comment faire ? Je peux fournir des screens de la console du serveur et du message d'erreur si tu veux.
Qu'est-ce que cela veux dire ?
Qu'est-ce que cela veux dire ?
J'ai ouvert ton .exe, que fais-je ensuite ?
Ce n'est pas magique et au moindre problème comme ici tu vas être coincé.
"j'ai plein d'infos mais je ne sais pas quoi en faire"
Déjà savoir si la quantité de mémoire allouée à ton programme est bien celle que tu as configurée... au travers des arguments de la JVM et/ou suivre les graphes d'évolution de mémoire pour savoir à combien ça plante.