Java.lang.OutOfMemoryError: Java heap space [Résolu/Fermé]

Signaler
Messages postés
73
Date d'inscription
jeudi 29 juin 2017
Statut
Membre
Dernière intervention
25 août 2017
-
Messages postés
73
Date d'inscription
jeudi 29 juin 2017
Statut
Membre
Dernière intervention
25 août 2017
-
Bonjour !

Je cherche à développer un serveur privé d'un MMORPG en ligne qui a fermé il y a une décennie, et j'ai récupéré les fichiers du jeu.
Maintenant, après avoir suivi toutes les étapes de fabrication, la console m'indique ceci après avoir lancé le RunAll.exe.
Comment faire ? Aidez-moi s'il vous plaît je n'ai plus aucune idée !
J'ai essayé en faisant Panneau de configuration > Programmes > Java et en augmentant le "head space" jusqu'à avoir 3GB en utilisant la commande "-Xms3072m".

Merci d'avance pour vos réponses.

9 réponses

Messages postés
15986
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 août 2020
2 651
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.)
Messages postés
73
Date d'inscription
jeudi 29 juin 2017
Statut
Membre
Dernière intervention
25 août 2017

Salut et merci de ta réponse !

J'ai ouvert ton .exe, que fais-je ensuite ?
Messages postés
73
Date d'inscription
jeudi 29 juin 2017
Statut
Membre
Dernière intervention
25 août 2017
>
Messages postés
73
Date d'inscription
jeudi 29 juin 2017
Statut
Membre
Dernière intervention
25 août 2017

Je n'ai aucune notion d'info, alors je ne sais pas ce qu'il faut faire :(
Messages postés
73
Date d'inscription
jeudi 29 juin 2017
Statut
Membre
Dernière intervention
25 août 2017

Je l'ai ouvert, j'ai lancé le programme, j'ai plein d'infos mais je ne sais pas quoi en faire...
Messages postés
15986
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 août 2020
2 651 >
Messages postés
73
Date d'inscription
jeudi 29 juin 2017
Statut
Membre
Dernière intervention
25 août 2017

Comment tu veux "développer un serveur privé d'un MMORPG en ligne" si tu n'as "aucune notion d'info"...

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.
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 ?
Messages postés
73
Date d'inscription
jeudi 29 juin 2017
Statut
Membre
Dernière intervention
25 août 2017

Du coup, comment est-ce que je fais pour fixer le problème maintenant ? S'il te plaît ! ^^
Messages postés
15986
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 août 2020
2 651 >
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...
Messages postés
73
Date d'inscription
jeudi 29 juin 2017
Statut
Membre
Dernière intervention
25 août 2017
>
Messages postés
15986
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 août 2020

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 ?
Messages postés
73
Date d'inscription
jeudi 29 juin 2017
Statut
Membre
Dernière intervention
25 août 2017

Parce que je comprends, mais je comprends pas pourquoi est-ce que quand je mets la fonction -Xmx3072M, ça ne fixe pas mon problème...
Messages postés
15986
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 août 2020
2 651 >
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.
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 :
Messages postés
15986
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 août 2020
2 651
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)
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 ^^
Messages postés
15986
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 août 2020
2 651
Le premier fichier RunAll.bat est intéressant.

Déjà tu vas diminuer la valeur
4000m
à
512m
parce 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.
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 ?
Messages postés
15986
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 août 2020
2 651
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...
Messages postés
73
Date d'inscription
jeudi 29 juin 2017
Statut
Membre
Dernière intervention
25 août 2017
>
Messages postés
15986
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 août 2020

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 ?
Messages postés
15986
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 août 2020
2 651 >
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...)
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 ? ^^
Messages postés
15986
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 août 2020
2 651 >
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.
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 !
Messages postés
73
Date d'inscription
jeudi 29 juin 2017
Statut
Membre
Dernière intervention
25 août 2017

En modifiant donc en rajoutant le 2) avec le rajout Xms et Xmx, ça se ferme automatiquement, et sans le rajout Xms et Xmx, ça se ferme aussi !
Messages postés
15986
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 août 2020
2 651 >
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 !
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
Messages postés
15986
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 août 2020
2 651 >
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:\...\GMH
puis
RunAll.bat
...
Messages postés
73
Date d'inscription
jeudi 29 juin 2017
Statut
Membre
Dernière intervention
25 août 2017

Merci beaucoup ^^ J'apprends des trucs :p
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 ?
Messages postés
15986
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 août 2020
2 651
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...
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 !
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
Messages postés
73
Date d'inscription
jeudi 29 juin 2017
Statut
Membre
Dernière intervention
25 août 2017

J'ai trouvé la solution ! Merci beaucoup pour l'aide ^^
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 ?
Messages postés
15986
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 août 2020
2 651
S'il y a un message d'erreur oui, ça peut être utile, mais vu qu'a priori ça concerne un autre problème ce serait mieux de créer une autre discussion...
Messages postés
73
Date d'inscription
jeudi 29 juin 2017
Statut
Membre
Dernière intervention
25 août 2017
>
Messages postés
15986
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 août 2020

Je créé de suite une autre discussion !