Forums d'assistance et de discussion sur les logiciels produits par Mozilla ou créés à partir des technologies Mozilla. Ce site ne dépend pas de la fondation Mozilla et est maintenu par un collectif de bénévoles.
HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
function displayVideo(idCam,monImage)
{
clearTimeout(Timer);
monImage.src = 'includes/createImage.php?act=1&cam='+idCam+'&unique='+new Date()*Math.random(); // partie aléatoire pour éviter le cache du navigateur
Timer = setTimeout(function(){displayVideo(idCam,monImage)},1000);
}
Cette fonction permet de rafraichir une image à intervalles réguliers pour à terme proposer une vidéo avec peu d'image par seconde.
Le problème c'est qu'avec firefox la mémoire vive n'est pas libéer après chaque rafraichissement de l'image.
A chaque rafraichissement FF consomme environ 1Mo en plus (alors que l'image rafraichie ne fait que 5 à 10ko) ce qui au final fait swaper le PC.
Une idée de la source du problème ?
Merci
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
Oui, c'est parce que les images sont stockées dans le cache non compressées. Et la partie aléatoire de ton URL n'évite pas le cache, au contraire, elle s'assure que toutes les images passeront dedans !
Comme tu génères tes images en PHP, je te suggèrerais d'au moins envoyer les headers HTTP demandant la non mise en cache (sans garantie que ce soit suffisant dans le cas du cache mémoire)
Voir l'exemple 5 dans http://www.php.net/header
Tu pourrais aussi faire un essai en assignant null à monImage.src pour vérifier que l'image est bien libérée.
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
Alors l'utilisation des entête anti cache de php ne semble pas suffire , je les ai placé sur ma page générant l'image ainsi que sur la page affichant l'image mais la consomation mémoire continu de grossir.
Cependant au départ la fuite est plus modéré et met plus de temps à devenir important que auparavant.
L'assignation à null de mon objet image (et/ou de sa source) ne marche pas non plus et me rajoute une image vide a chaque fois.
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
Le phénomène devrait être beaucoup moins prononcé voire disparaître car:
1) les problèmes de fragmentation mémoire sur les images sont en cours de réduction;
2) les images non-compressées sont effacées de la mémoire après 60 secondes (s'il s'agit de jpeg ou png, mais pas (encore) les gif;
3) les gif sont décompressées en 8 bits et non en 24 bits;
4) l'effacement des objets js inutilisés est différent.
Si le problème persiste, comme le code est très simple, il peut valoir la peine de remplir un rapport de bug avec "mlk" comme mot clé. On aura un avis des dev de javascript.
Message envoyé avec : Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; fr-CH; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
La liberté n'est jamais accordée de bon gré par l'oppresseur; elle doit être exigée par l'opprimé (Martin Luther King).
Les convictions sont des ennemis de la vérité plus dangereux que les mensonges. (Nietzsche).
Native Mozillian.
Salut et merci de ta réponse.
Avec la dernière nightly le phénomène est très atténué ! Au lieu de perdre près d'1Mo à la seconde , la fuite est d'environ 1Mo minute ce qui reste raisonnable mais cependant problématique.
Même si le pb est mineur je pense que ca peut se révéler intéressant à repporter.
Merci
Edit pour info voici un petit test :
Minute 0 : 31080 Ko
Minute 1 : 32420 Ko
Minute 2 : 34156 Ko
Minute 3 : 36104 Ko
Avec la version 2, je tenais même pas une minute sans que le PC swap.
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
Le problème c'est que pour des raisons historiques (la plupart des scripts de rollover en fait), une image qui a été chargée dans la page doit être conservée en mémoire.
Je crois qu'en réalité la plupart des scripts de webcams et autres utilisent plutôt un élément iframe qu'un élément img pour cette raison.
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪