Rechercher : dans
Par :

[Java] Alocation de mémoire

Dernière réponse le 30 sep 2009 à 21:11:15 zagor5, le 17 avr 2003 à 23:03:13 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « [Java] Alocation de mémoire » dans :
Linux – Gentoo - Installation et configuration de JAVA VoirLinux – Gentoo - Installation et configuration de JAVA La distribution Gentoo de linux propose une panoplie d’environnements JRE et JDK. Pour les installer il suffit de précéder comme suit Installation de la JDK Pour lancer l’installation il faut...
L'adresse mémoire ne peut pas être 'Read' ou 'Written' VoirL'adresse mémoire ne peut pas être 'Read' ou 'Written' Vérifier le fonctionnement des barrettes mémoire Vérifier la présence de malwares et le cas échéant, les éradiquer Vérifier la configuration de Windows Nettoyer le disque dur Réparer...
[Mémoire] Quantité de RAM et mémoire virtuelle VoirQuelle quantité de mémoire RAM installer dans son PC ? Quelle quantité de mémoire vive allouer ? Tout dépend du système d'exploitation et de l'utilisation du PC. Plus la quantité de mémoire est importante, plus le gain en performances sera...
Télécharger Java Runtime Environment VoirJava Runtime Environment (JRE) installe la machine virtuelle Java, permettant de jouer en ligne, de discuter avec des personnes dans le monde entier, de calculer les intérêts de votre prêt immobilier ou de visualiser des images en 3D. Ces...
Télécharger Aide-mémoire VoirCe logiciel permet de coller des aides mémoires (post-it) sur votre bureau. Son but est simple, éviter de décorer votre écran d'ordinateur avec de multiples postits. Caractéristiques Taille et couleur personnalisable Les aides mémoires peuvent...
La mémoire vive (RAM ou mémoire PC) VoirTypes de mémoires vives On distingue généralement deux grandes catégories de mémoires vives : Les mémoires dynamiques (DRAM, Dynamic Random Access Module), peu coûteuses. Elles sont principalement utilisées pour la mémoire centrale de...
Disque dur VoirLe rôle du disque dur Le disque dur est l'organe servant à conserver les données de manière permanente, contrairement à la mémoire vive, qui s'efface à chaque redémarrage de l'ordinateur, c'est la raison pour laquelle on parle parfois de mémoire...
Java - Les types de données VoirLes primitives Java est un langage orienté objet, c'est-à-dire que les éléments manipulés sont des classes, ou plus exactement des objets, c'est-à-dire des instances de classes. Toutefois ces objets contiennent des données possèdant un type (et...

1

Will, le 18 avr 2003 à 12:03:46

Un probleme de memoire en java c etonnant
Quelle erreur se produit ?

Répondre à Will

2

choubaka, le 18 avr 2003 à 12:07:30

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:

Répondre à choubaka

3

toony, le 18 avr 2003 à 12:12:45

Bonjour,

Je voudrais bien savoir ce qu'est ce message d'erreur parce qu'en Java j'en ai jamais rencontré contrairement au C.

Répondre à toony

4

Will, le 18 avr 2003 à 12:18:53

Je suis d'accord avec toony, je veux voir ca .

par contre choubaka : tu n'as rien compris ! lol

Répondre à Will

13

choubaka, le 22 avr 2003 à 08:10:42

Moi? est-ce possible????

la fatigue, le stress sans doute

Choubadamour:
Le doudou à format c:

Répondre à choubaka

5

brj, le 18 avr 2003 à 13:16:31

Cela ne serait il pas la memoire de la JVM qui est despasse?

Répondre à brj

6

zagor5, le 18 avr 2003 à 18:31:02

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.

Répondre à zagor5

7

brj, le 18 avr 2003 à 19:06:20

Ben ou est le probleme!?
c'est toi qui doit utilise trop de ressource?
Quel type de jeu?

Répondre à brj

8

zagor5, le 18 avr 2003 à 19:10:20

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.

Répondre à zagor5

9

brj, le 18 avr 2003 à 20:01:19

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?

Répondre à brj

10

zagor5, le 18 avr 2003 à 20:22:48

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.

Répondre à zagor5

11

olivier.s, le 18 avr 2003 à 21:51:13

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.

Répondre à olivier.s

12

zagor5, le 18 avr 2003 à 22:12:49

Merci à tous pour les conseils. Je verrais ca à mon retour de vacances.

Répondre à zagor5

14

zagor5, le 5 jui 2003 à 21:14:15
  • +1

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.

Répondre à zagor5

15

kalima, le 25 nov 2003 à 11:55:26

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.

Répondre à kalima

16

lof., le 25 nov 2003 à 15:25:09

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

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.

Répondre à lof.

17

rameur, le 25 nov 2003 à 19:37:01

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 !
...

Répondre à rameur

18

rameur, le 25 nov 2003 à 19:41:39

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

Répondre à rameur

19

rameur, le 25 nov 2003 à 19:45:40

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

Répondre à rameur

20

rameur, le 25 nov 2003 à 19:48:59

Tu peux aussi redefinir la methode finalize de ta classe pour liberer les ressources .attention
la premiere instruction doit etre super.finalize()

Répondre à rameur