[Java] Alocation de mémoire
zagor5
Messages postés
187
Date d'inscription
lundi 3 février 2003
Statut
Membre
Dernière intervention
21 octobre 2005
-
17 avril 2003 à 23:03
Minoulefou -
Minoulefou -
Bonsoir,
dans une de mes programmes (un petit jeu), j'ai un problème avec la mémoire utilisée. Est-ce qu'il existe un programme pour connaitre précisement l'utilisation de la mémoire par les différents objets et/ou class ?
Merci d'avance
dans une de mes programmes (un petit jeu), j'ai un problème avec la mémoire utilisée. Est-ce qu'il existe un programme pour connaitre précisement l'utilisation de la mémoire par les différents objets et/ou class ?
Merci d'avance
A voir également:
- [Java] Alocation de mémoire
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Mémoire vive - Guide
- RAM : type, format, CAS, vitesse, tout sur la mémoire vive - Guide
- Eclipse java - Télécharger - Langages
20 réponses
zagor5
Messages postés
187
Date d'inscription
lundi 3 février 2003
Statut
Membre
Dernière intervention
21 octobre 2005
32
5 juil. 2003 à 21:14
5 juil. 2003 à 21:14
Je me suis remis à ce programme, (non, j'ai passé qu'une semaine de vacances, mais je me suis à nouveau penché sur le problème que maintenant.) et j'ai trouvé une solution au problème. J'ai utilisé la méthode Systeme.gc() qui arrive à me libérer la mémoire (enfin ça à l'air de marcher).
Et en plus le son qui ne marchait pas après un certain temps, fonctionne en premanence.
Je voulais juste vous faire part de la résolution de mon problème.
Et en plus le son qui ne marchait pas après un certain temps, fonctionne en premanence.
Je voulais juste vous faire part de la résolution de mon problème.
lof.
Messages postés
689
Date d'inscription
mercredi 12 février 2003
Statut
Membre
Dernière intervention
11 juin 2007
44
25 nov. 2003 à 15:25
25 nov. 2003 à 15:25
Bonjour,
Il faut utiliser un profiler pour voir par quel package et quel objet utilise le plus la ressource.
Je ne connais pas de profiler autre que le plug-in "profiler" pour éclipse, je pense qu'il doit en existé d'autre, en freeware.
Sinon pour le problème outOfMemory :
1. ajouter de la mémoire par l'option :
-Xmx[mémoireAlouéJVM]m
Mais ceci ne réglera pas le problème de mémoire, mais donnera [mémoireAlouéJVM] MO à la JVM
2. mettre la valeur
3. demander le passage du garbage collector
Avec les points 2 et 3, et un découpage en morceaux, j'ai réussit à maintenir une méthode récursive en dessous de 64 Mo alors que sans, je dépassais allégrement les 300Mo de la JVM.
Arrff
lof.
Il faut utiliser un profiler pour voir par quel package et quel objet utilise le plus la ressource.
Je ne connais pas de profiler autre que le plug-in "profiler" pour éclipse, je pense qu'il doit en existé d'autre, en freeware.
Sinon pour le problème outOfMemory :
1. ajouter de la mémoire par l'option :
-Xmx[mémoireAlouéJVM]m
Mais ceci ne réglera pas le problème de mémoire, mais donnera [mémoireAlouéJVM] MO à la JVM
2. mettre la valeur
nullà chaque fois qu'un objet n'est plus utilisé, ceci "peut" accélérer le passage du garbage collector. Enfin, tout le monde n'est pas d'accord sur ce point.
3. demander le passage du garbage collector
System.gc();mais rien ne garantie qu'il passera.
Avec les points 2 et 3, et un découpage en morceaux, j'ai réussit à maintenir une méthode récursive en dessous de 64 Mo alors que sans, je dépassais allégrement les 300Mo de la JVM.
Arrff
lof.
Bonjour,
le garbage collector de java se gère et se lance automatiquement. Si une fois que le garbage collector est passé (soit en automatique soit à la main avec le system.gc()), la mémoire doit redescendre significativement. Si tel n'est pas le cas, on peut parler de probleme mémoire, surtout si ton appli ne justifie pas une allocation importante de mémoire.
Tu peux aussi utiliser des profilers, et surtout la jconsole pour monitorer ton appli. J'ai posté un article sur mon blog à l'adresse https://tcourant.wordpress.com/2009/09/14/analyse-de-la-memoire-dune-application-java/
A+.
le garbage collector de java se gère et se lance automatiquement. Si une fois que le garbage collector est passé (soit en automatique soit à la main avec le system.gc()), la mémoire doit redescendre significativement. Si tel n'est pas le cas, on peut parler de probleme mémoire, surtout si ton appli ne justifie pas une allocation importante de mémoire.
Tu peux aussi utiliser des profilers, et surtout la jconsole pour monitorer ton appli. J'ai posté un article sur mon blog à l'adresse https://tcourant.wordpress.com/2009/09/14/analyse-de-la-memoire-dune-application-java/
A+.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
choubaka
Messages postés
39442
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
1 août 2025
2 105
18 avril 2003 à 12:07
18 avril 2003 à 12:07
je sais que l'on peut voir ce qu'utilise l'application qui tourne, mais objet par objet ???????????
ctrl-alt-del / task manager/processes
Choubadamour:
Le doudou à format c:
ctrl-alt-del / task manager/processes
Choubadamour:
Le doudou à format c:
Bonjour,
Je voudrais bien savoir ce qu'est ce message d'erreur parce qu'en Java j'en ai jamais rencontré contrairement au C.
Je voudrais bien savoir ce qu'est ce message d'erreur parce qu'en Java j'en ai jamais rencontré contrairement au C.
je suis d'accord avec toony, je veux voir ca .
par contre choubaka : tu n'as rien compris ! lol
par contre choubaka : tu n'as rien compris ! lol
choubaka
Messages postés
39442
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
1 août 2025
2 105
22 avril 2003 à 08:10
22 avril 2003 à 08:10
moi? est-ce possible????
la fatigue, le stress sans doute
Choubadamour:
Le doudou à format c:
la fatigue, le stress sans doute
Choubadamour:
Le doudou à format c:
brj
Messages postés
159
Date d'inscription
dimanche 6 avril 2003
Statut
Membre
Dernière intervention
8 septembre 2003
10
18 avril 2003 à 13:16
18 avril 2003 à 13:16
Cela ne serait il pas la memoire de la JVM qui est despasse?
zagor5
Messages postés
187
Date d'inscription
lundi 3 février 2003
Statut
Membre
Dernière intervention
21 octobre 2005
32
18 avril 2003 à 18:31
18 avril 2003 à 18:31
En fait, il y a pas de message d'erreur, c'est justement le processe de mon application qui fait que d'augmenter jusqu'à envrion 200mb.
brj
Messages postés
159
Date d'inscription
dimanche 6 avril 2003
Statut
Membre
Dernière intervention
8 septembre 2003
10
18 avril 2003 à 19:06
18 avril 2003 à 19:06
ben ou est le probleme!?
c'est toi qui doit utilise trop de ressource?
Quel type de jeu?
c'est toi qui doit utilise trop de ressource?
Quel type de jeu?
zagor5
Messages postés
187
Date d'inscription
lundi 3 février 2003
Statut
Membre
Dernière intervention
21 octobre 2005
32
18 avril 2003 à 19:10
18 avril 2003 à 19:10
Un petit shoot'm up spatial. Un vaisseau tir sur des ennemis. La mémoire utilisée au debut est de 16mb et elle continue à augmenter jusqu'à la fin. On dirait que la mémoire ne se libère jamais.
brj
Messages postés
159
Date d'inscription
dimanche 6 avril 2003
Statut
Membre
Dernière intervention
8 septembre 2003
10
18 avril 2003 à 20:01
18 avril 2003 à 20:01
Jamais vu ce probleme!?
Mais je crois qu'il y a un moyen d'obliger le garbage collector a faire le menage.
Ou bien une mauvaise conception?
Mais je crois qu'il y a un moyen d'obliger le garbage collector a faire le menage.
Ou bien une mauvaise conception?
zagor5
Messages postés
187
Date d'inscription
lundi 3 février 2003
Statut
Membre
Dernière intervention
21 octobre 2005
32
18 avril 2003 à 20:22
18 avril 2003 à 20:22
Mais comment obliger le garbage collector à faire le menage?
Il y a peut-etre un problème de conception, mais je ne vois pas vraiment d'ou ca vient, d'ou ma question du debut: comment savoir ce qui utilise de la memoire.
Il y a peut-etre un problème de conception, mais je ne vois pas vraiment d'ou ca vient, d'ou ma question du debut: comment savoir ce qui utilise de la memoire.
olivier.s
Messages postés
49
Date d'inscription
jeudi 11 avril 2002
Statut
Membre
Dernière intervention
28 mars 2015
15
18 avril 2003 à 21:51
18 avril 2003 à 21:51
Bonsoir a tous
Essais de faire un finalize qui t'inscrit des messages dans un fichier d'erreurs, tu verras d'ou viens le pb si il y a pb de liberation. Ca risque d'etre un peu lourd pour environ 200Mb d'objets!! Mais ca peut te donner la ou les classes qui posent pb.
Essais de faire un finalize qui t'inscrit des messages dans un fichier d'erreurs, tu verras d'ou viens le pb si il y a pb de liberation. Ca risque d'etre un peu lourd pour environ 200Mb d'objets!! Mais ca peut te donner la ou les classes qui posent pb.
zagor5
Messages postés
187
Date d'inscription
lundi 3 février 2003
Statut
Membre
Dernière intervention
21 octobre 2005
32
18 avril 2003 à 22:12
18 avril 2003 à 22:12
Merci à tous pour les conseils. Je verrais ca à mon retour de vacances.
Moi j'ai le message java.lang.OutOfMemoryError. Je sais que c lié à la JVM mais je ne sais pas comment résoudre ce problème! quelqu'un peut m'aider svp? Merci.
rameur
Messages postés
135
Date d'inscription
lundi 8 avril 2002
Statut
Membre
Dernière intervention
21 janvier 2009
21
25 nov. 2003 à 19:37
25 nov. 2003 à 19:37
la classe Runtime (java.lang) te permet de savoir quelle quantite de memoire ton programme utilise consulte l aide en ligne for more details
Runtime run = Runtime.getRuntime();
run.freeMemory(); // retourne la ... memoire libre
run.totalMemory() //retourne la ... devine !
...
Runtime run = Runtime.getRuntime();
run.freeMemory(); // retourne la ... memoire libre
run.totalMemory() //retourne la ... devine !
...
rameur
Messages postés
135
Date d'inscription
lundi 8 avril 2002
Statut
Membre
Dernière intervention
21 janvier 2009
21
25 nov. 2003 à 19:41
25 nov. 2003 à 19:41
pour ceux qui n ont jamais vu d erreur la classe OutOfMemoryException ( dans java.lang, plus de memoire dispo..)
existe si vous n etes aps au courant
utilisez simplement une boucle du genre while(true) et creer des objets a la volee sans les detruire dedans
existe si vous n etes aps au courant
utilisez simplement une boucle du genre while(true) et creer des objets a la volee sans les detruire dedans
rameur
Messages postés
135
Date d'inscription
lundi 8 avril 2002
Statut
Membre
Dernière intervention
21 janvier 2009
21
25 nov. 2003 à 19:45
25 nov. 2003 à 19:45
tu pourrais augmenter l espace alloue a ton programme en passant des parametresa la ligne de commande au lancement (du genre
java <argAlloc> <taille> MaClasse [arguments...])malheuresement je les ai oublies mon gars
java <argAlloc> <taille> MaClasse [arguments...])malheuresement je les ai oublies mon gars
rameur
Messages postés
135
Date d'inscription
lundi 8 avril 2002
Statut
Membre
Dernière intervention
21 janvier 2009
21
25 nov. 2003 à 19:48
25 nov. 2003 à 19:48
tu peux aussi redefinir la methode finalize de ta classe pour liberer les ressources .attention
la premiere instruction doit etre super.finalize()
la premiere instruction doit etre super.finalize()