Pimousse77
Messages postés42Date d'inscriptionmercredi 2 avril 2003StatutMembreDernière intervention 6 janvier 2005
-
18 oct. 2004 à 12:39
katykatou
Messages postés3Date d'inscriptionmercredi 31 janvier 2007StatutMembreDernière intervention20 février 2010
-
17 févr. 2007 à 18:35
Pimousse : débutant en java
Bonjour,
Mon problème est le suivant :
J'aimerais savoir de quelle façon on est censés gérer la mémoire en java. Normallement c'est la VM qui se charge de tout, et le garbage collector passe régulièrement pour garbagecollecter et tout va bien dans le meilleur des mondes.
Mais si en allant voir dans le gestionnaire de windows on se rend compte que la mémoire ne se libère pas au fur et à mesure (que l'on supprime des JPanel par exemple :D), existe t'il un moyen "propre" de détruire un objet (un JPanel au hasard :D).
Parcequ'il me semble que la méthode finalize() ca fait dresser les cheveux sur la tête des javaïstes chevronnés, et en plus je viens d'essayer et ça marchait même pas !! En faisant finalize() sur le JPanel la mémoire ne se libérait pas...
La méthode propre consiste t'elle donc à s'assurer que tous les liens vers ce JPanel ont été détruits ? (Faire confiance au garbage collector). Ou y'a t'il une autre méthode ?
Dans le premier cas, mon deuxième problème est le suivant :
J'ai ajouté un JPanel dans un CardLayout avec la méthode add( new Carte() );
Donc aucune référence vers cette carte à priori. Dans ma méthode fermerProprement(), je fais appel à ma méthode supprimerCarte(JPanel carteASuppr) qui se contente de faire un remove (comme j'avais fait le add).
Ca marche bien au niveau de l'application, pas de probleme la carte a bien disparu, je passe sur celle d'après etc, magnifique...
Mais c'est ces centaines de Ko que je ne vois pas disparaitre du gestionnaire de tâches qui m'énervent. Ou peut il bien y avoir une autre référence à ce JPanel ?
Pimousse77
Messages postés42Date d'inscriptionmercredi 2 avril 2003StatutMembreDernière intervention 6 janvier 2005 19 oct. 2004 à 10:25
Vi donc on en revient à ce que je disais :
Il faut être sûr de ne pas avoir oublié une seule référence !
Mais au fait, si on ne fait pas d'appel explicite au garbage collector, il passe régulièrement ou bien c'est aléatoire ? Comment ca se passe ? Y'a un cycle ou c'est quand la mémoire commence à manquer ?
Merci encore,
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 201212 19 oct. 2004 à 18:22
GodConan :clown)
euuhhh mais c koi ton prob exactement ??!!!
me di pas que tu as 200 ref sur la meme instance!!!
si c est le cas corrige ;o) et utilise comme cela est preconisé ;o)
des methode "get" .... ;o) et tu seras plus tranquill ;o)
pour ce qui est du comportement gc ;o) cela depend des jvm
et rapelle toi en informatique ;o) rien n est aleatoire... ;o)
(la meilleur source d info c sun pour ce genre de question)
katykatou
Messages postés3Date d'inscriptionmercredi 31 janvier 2007StatutMembreDernière intervention20 février 2010 17 févr. 2007 à 18:35
salut s'il vous plait j'ai besoin d'un code écrit en java d'un simulateur animé de mémoire centrale en indiquant juste les processus évidemment et les stratégies d'allocations(best fit, worst fit, first fit) sans entrer dans les détails de la pagination. j'ai un projet et je voudrais bien qu'on m'aide car je suis une débutante en java alors si vous avez une idée svp n'hésiter pas merci