Problème de mémoire avec les Applet Java

vanitom

Membre confirmé
29 Juin 2005
68
0
79
Bonjour,

Je suis en train de tester une applet java sous MacOsX 10.4.7 et j'ai constaté que lors du chargement de la page contenant l'applet, java alloue de la mémoire pour l'applet, mais quand je recharge la même page ( "Raffraichir la page" ), java ne libère pas la mémoire qu'il vient d'allouer. Donc au bout d'un certain nombre de rafraichissement, la mémoire alloué par java est phénoménale.

Quelqu'un a déjà eu le problème ? Et si c'est le cas, d'où vient ce problème ?
Et pourquoi pas comment faire pour corriger ce problème.

P.S. Il faut savoir que l'applet testé fonctionne bien sous Windows. Sous Windows, java libère correctement la mémoire avant chaque rafraichissement.


Merci d'avance
 
C'est peut-être ridicule ce que je vais dire, mais j'ai cru comprendre dans mes cours que le garbage-collector (le mécanisme qui libére la mémoir en bouffant des objets ;) ) ne travaillait que quand il "jugeait" utile (manque de mémoir), il ne se déclanche donc peut-être pas au même moment entre le mac et le PC, si tu continues tes reloads très longtemps, il va peut-être se mettre à travailler :) .

Sinon, je sais pas si il est possible de le forcer à la tâche avec une quelconque méthode, il faudrait pour ceci la mettre dans la méthode start() de l'applet sauf erreur, car elle est appelée au reload il me semble...


En relisant, je me dis: Assez vague tout de même comme réponse
 
As-tu overridé la méthode Applet.destroy() ?
Si oui, mets-tu tous les attributs de ta classe à null ?
Sinon, je pense que c'est "normal" qu'il ne libère pas les resources.
Note que la différence entre Mac et PC peut venir plus simplement du browser (l'un initialiser la JVM à chaque démarrage d'applet et l'autre pas, peut-être...)
 
Alors en fait, les tests ont été fait avec des applets dont je ne suis pas propriétaire. Je crois que c'est des applets de sun. [ A comfirmer ]

Il m'est donc impossible de vérifier le code source des applets.

Par contre niveau navigateur. Sous Windows les tests ont été fait avec IE et Firefox sans aucun soucis de mémoire. Par contre sous Mac :mad:, les tests ont été fait avec Safari et Firefox avec toujours les même problèmes de vol de mémoire.

Donc c'est pour ça, j'ai du mal à comprendre. Ca voudrait dire que la machine virtuelle de sun sous Mac n'est pas sympa et ne rend jamais la mémoire alloué. En tout cas pour les applets. C'est quand même étonnant.
 
Bon j'ai vérifié les tests ont été fait avec les exemples de sun ( http://java.sun.com/applets/jdk/1.4/index.html ) et avec les exemples des applets que j'utilise d'ObjectPlanet ( http://www.objectplanet.com/table/userguide.html ).

Si vous avez un de temps, j'aimerai que vous faissiez quelques tests pour moi de votre coté.

En fait il faudrait aller sur ces sites et ouvrir plusieurs fois les mêmes fenêtres. Un bon nombre de fois même. Et vérifier lors de la fermeture de la fenêtre si la machine virtuelle libére bien ce qu'il devrait.
Ce test est simple à faire avec la page de test d'ObjectPlanet car toutes les applets sont dans même page mais par contre pour les exemples de Sun, c'est moins facile car ce sont de petites applets.

En fait pour le voir, il suffit d'avoir un "Moniteur système" et de suivre l'évolution de la mémoire alloué ( Réelle et virutelle ) du navigateur en cours d'utilisation.

Pour le retour, ce qui serait cool de connaitre le type de machine, la version de l'OS, nom du navigateur avec sa version, et pour les ceux qui savent comment le récupérer la version de la machine virtuelle de Sun.

Merci d'avance les gars
 
Ouh là là... je ne vois pas très bien le rapport entre ton navigateur et Java...

Dans ce que tu décris, il semblerait que le soucis d'augmentation de la mémoire allouée vienne de ton navigateur. Peux-tu le confirmer ?

Dans ce cas, je ne vois pas le rapport avec la JVM :mouais:
 
Ba c'est la conclusion que j'en tire.

Alors déjà tous les navigateurs que j'ai essayé ont exactement le même problème. Personne ne veut rien ( ou presque ) rendre.

Et ensuite sous Windows, Firefox fonctionne correctement mais pas sous Mac alors qu'il est sensé avec le même fonctionnement.

Donc si j'exclus le navigateur, il reste la machine virtuelle.

A moins qu'il est autre chose mais là, je ne vois mais je ne suis préneur quand même.
 
Je ne vois pas non plus...

D'ailleurs, quel est le process qui te renvoie un OutOfMEmory ?

A défaut, si tu veux exclure le navigateur, il y a dans les dev tools d'Apple un Lanceur d'Applets (sous /ddur/Developer/Applications/Java Tools).
 
Bon alors pour le lanceur d'applet j'ai pas trouvé, dans le répertoire en question j'ai juste "JavaBrowser" et "JavaBundler".
Mais aucun des deux n'a l'air d'avoir une fonction de test. Mais par contre, c'est peu être que j'ai regardé sur une Panther et pas un Tiger. ( J'ai pas le Dev sur Tiger )

Aurais-tu un process "java" dans ton Moniteur d'Activités?
Non en fait il n'y a pas de process "Java" mais juste celui du navigateur.
 
Bonjour moi aussi j'ai un pb avec java : lorque que je lance minecraft (sur mon mac) l'application commence a consommer de plus en plus de ram et fini par consommer 48 go de ram bloquant ainsi mon jeu. Je précise que cela m'est arrivé il y a peu de tps, alors qu'avant tout marchais bien...
Please helpppp