<?xml version="1.0"?> 
	<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> 
	<wml> 
	<card id="accueil" title="News ">
	<p style="font-color:#000000;">
	<small>
	17/03 10:55:00 - Mozilla &#58; la consommation m&#233;moire de Firefox expliqu&#233;e<br/><br/>
L&#39;un des d&#233;veloppeurs de Firefox vient de poster un billet tr&#232;s int&#233;ressant sur son blog&#44; afin d&#39;expliquer les domaines dans lesquels les artisans du navigateur de Mozilla ont travaill&#233; pour la prochaine mouture&#46; Relativement long et technique&#44; le billet dresse &#233;galement un point de comparaison entre la consommation de la r&#233;cente b&#234;ta 4 de Firefox 3 et celles de Firefox 2&#46;0&#46;0&#46;12 et Internet Explorer 7&#46;<br/>&#13;&#10;<br/>&#13;&#10;La m&#233;moire vive&#44; un vrai champ de bataille<br/>&#13;&#10;<br/>&#13;&#10;Il est clair que la consommation des ressources a toujours &#233;t&#233; un probl&#232;me important soulign&#233; &#224; de tr&#232;s nombreuses reprises par les utilisateurs de Firefox&#46; Plusieurs onglets ouverts&#44; et certains voyaient grimper la consommation de m&#233;moire vive jusqu&#39;&#224; plusieurs centaines de m&#233;gaoctets&#44; un ph&#233;nom&#232;ne qui ne faisait qu&#39;augmenter selon le temps d&#39;ouverture du navigateur&#44; surtout sur les m&#234;mes pages&#46;<br/>&#13;&#10;<br/>&#13;&#10;En fait&#44; si le probl&#232;me &#233;tait g&#233;n&#233;ral&#44; il &#233;tait surtout divis&#233; en plusieurs rubriques&#44; chacune ayant ses raisons techniques&#46; Ainsi&#44; l&#39;un de ces probl&#232;mes est l&#39;allocation de m&#233;moire vive&#44; ou plus exactement les demandes d&#39;allocations faites par le navigateur&#46; C&#39;est tout le code source de Firefox qui a &#233;t&#233; repris ou presque&#44; pour d&#233;compter le nombre total d&#39;allocations demand&#233;es&#46; Et ce chiffre &#233;tait de plus de 60 000 dans Firefox 2&#44; et est d&#233;sormais inf&#233;rieur &#224; 40 000&#44; soit une r&#233;duction d&#39;un bon tiers&#46; Le travail continue sur la fragmentation de la m&#233;moire&#44; mais une grosse partie des objectifs est d&#233;j&#224; atteinte&#46;<br/>&#13;&#10;<br/>&#13;&#10;La gestion des cycles<br/>&#13;&#10;<br/>&#13;&#10;Un autre grand souci pr&#233;sent dans les versions pr&#233;c&#233;dentes de Firefox est la gestion des cycles&#46; Un cycle est d&#233;crit comme une relation entre deux ou plusieurs &#233;l&#233;ments se faisant r&#233;f&#233;rence l&#39;un l&#39;autre&#46; Tant que cette relation continue&#44; chaque &#233;l&#233;ment reste en &#171; vie &#187;&#44; ne se d&#233;gageant ainsi pas de la m&#233;moire&#46; <br/>&#13;&#10;<br/>&#13;&#10;Ces cycles se cr&#233;ent en toutes occasions et sont difficiles &#224; rep&#233;rer&#46; En fait&#44; c&#39;est au d&#233;veloppement de l&#39;application elle&#45;m&#234;me que le code permet ou pas la pr&#233;sence de cycles&#44; et c&#39;est donc une question de vigilance&#44; ce qui pose un autre probl&#232;me&#46; Il faut savoir en effet que Firefox doit une grande partie de son succ&#232;s &#224; l&#39;&#233;cosyst&#232;me des extensions du navigateur&#46; Or&#44; ces extensions ont le droit d&#39;acc&#233;der &#224; n&#39;importe quelle partie de la m&#233;canique interne de leur h&#244;te&#44; et peuvent donc ainsi introduire une grande quantit&#233; de cycles&#44; compliquant la t&#226;che des d&#233;veloppeurs&#46;<br/>&#13;&#10;<br/>&#13;&#10;De Firefox 1&#46;5 &#224; la version 2&#46;0&#44; les cycles d&#233;couverts ont &#233;t&#233; bris&#233;s et corrig&#233;s manuellement&#44; avec un code sp&#233;cifique pour chacun&#46; Une solution certes&#44; mais une solution r&#233;barbative et quelque peu chronophage&#46; Un collecteur automatique de cycles a dont &#233;t&#233; mis en place dans Firefox 3 pour rep&#233;rer les cas concern&#233;s et les briser de mani&#232;re r&#233;currente&#46; On peut comparer la mission de ce nouveau composant au r&#244;le essentiel d&#39;un &#233;boueur qui fait sa tourn&#233;e r&#233;guli&#232;re pour collecter les d&#233;chets&#46;<br/>&#13;&#10;<br/>&#13;&#10;Des caches gloutons<br/>&#13;&#10;<br/>&#13;&#10;Les caches de Firefox sont un &#233;l&#233;ment essentiel pour la rapidit&#233; et la fluidit&#233; de la navigation&#46; Ce sont ces fameuses zones dans lesquelles sont entrepos&#233;es des informations relatives aux pages que vous avez visit&#233;es&#46; Les caches permettent ainsi de charger des pages d&#233;j&#224; vues beaucoup plus rapidement&#44; quitte &#224; parfois remettre en place des &#233;l&#233;ments &#171; p&#233;rim&#233;s &#187;&#46; On conna&#238;t bien s&#251;r le cache des adresses web&#44; mais il y a &#233;galement celui du code des pages ou encore celui des images&#46;<br/>&#13;&#10;<br/>&#13;&#10;En fait&#44; il faut distinguer les diff&#233;rents types de caches&#44; car tous ont un point de chute sur le disque dur&#44; mais tous ont &#233;galement leur propre consommation de m&#233;moire vive&#46; L&#39;une des explications &#224; la consommation croissante de la m&#233;moire avec Firefox 2 est que le cache augmente sans cesse&#44; sans limite de temps&#44; pour pr&#233;voir votre retour sur des sites que vous avez visit&#233;s&#44; m&#234;me si ces visites datent de plusieurs heures&#46;<br/>&#13;&#10;<br/>&#13;&#10;Avec Firefox 3&#44; les caches ne peuvent plus stocker de l&#39;information &#224; l&#39;infini&#46; Bien qu&#39;ils permettent le tr&#232;s agr&#233;able effet d&#39;instantan&#233; lorsque l&#39;on utilise les boutons pr&#233;c&#233;dent&#47;suivant&#44; ils supprimeront d&#233;sormais automatiquement les informations relatives &#224; des pages visit&#233;es plus de 30 minutes auparavant&#46; La demi&#45;heure joue donc le r&#244;le de fronti&#232;re temporelle au&#45;del&#224; de laquelle les donn&#233;es sont effac&#233;es du cache&#46;<br/>&#13;&#10;<br/>&#13;&#10;Le stockage des images &#58; de 100 Ko sur un site &#224; plusieurs Mo en m&#233;moire<br/>&#13;&#10;<br/>&#13;&#10;Ces probl&#232;mes de cache comptent tr&#232;s probablement parmi les plus importants et s&#233;rieux de Firefox&#44; en particulier dans la gestion des images&#46; Ces derni&#232;res sont le plus souvent pr&#233;sentes dans des formats compress&#233;s sur les pages web&#46; Les formats GIF&#44; JPEG ou encore PNG sont les plus courants&#44; mais Firefox doit les d&#233;compresser pour les utiliser en m&#233;moire&#46;<br/>&#13;&#10;<br/>&#13;&#10;Dans Firefox 2&#44; les images d&#233;compress&#233;es sont stock&#233;es dans le cache m&#233;moire pendant des heures&#44; y compris sur des pages pr&#233;sentes dans des onglets qui n&#39;ont pas &#233;t&#233; consult&#233;s eux aussi depuis un bon moment&#46; Et une image d&#39;&#224; peine 100 Ko peut occuper plusieurs m&#233;gaoctets en m&#233;moire&#44; ce qui conduit le navigateur &#224; demander une dose gargantuesque de m&#233;moire vive&#46; Dans Firefox 3&#44; non seulement les informations des images d&#233;compress&#233;es sont jet&#233;es &#224; la poubelle au bout de 30 minutes&#44; mais les onglets qui ne sont pas sp&#233;cifiquement ouverts et actifs ne chargent plus les images en m&#233;moire&#46;<br/>&#13;&#10;<br/>&#13;&#10;Les fuites de m&#233;moire&#44; un probl&#232;me r&#233;current<br/>&#13;&#10;<br/>&#13;&#10;Enfin&#44; l&#39;un des domaines qui a demand&#233; le plus de travail aux d&#233;veloppeurs est la chasse aux fuites de m&#233;moire&#46; Sympt&#244;me d&#39;une de ces fuites &#58; la consommation en m&#233;moire vive de Firefox augmente sans cesse&#44; sans raison apparente et de mani&#232;re plus ou moins chaotique&#46; Dans les grandes lignes&#44; il s&#39;agit d&#39;une action effectu&#233;e au sein du logiciel et qui demande une certaine quantit&#233; de m&#233;moire&#44; &#224; la diff&#233;rence qu&#39;elle se r&#233;p&#232;te en boucle et de mani&#232;re infinie&#46; Certaines fuites sont plus importantes que d&#39;autres&#44; le principal facteur &#233;tant justement la quantit&#233; de m&#233;moire affect&#233;e &#224; l&#39;action initiale&#46;<br/>&#13;&#10;<br/>&#13;&#10;Depuis le d&#233;but du d&#233;veloppement de Firefox 3&#44; plus de 400 de ces fuites ont &#233;t&#233; colmat&#233;es&#44; et certaines &#233;taient franchement ennuyeuses&#46; Elles ne sont pas toutes r&#233;guli&#232;res dans la mesure o&#249; elles surviennent souvent sur des sites particuliers avec un contexte sp&#233;cifique&#46; Mais dans des cas comme Gmail&#44; la situation devient vite ennuyeuse puisque c&#39;est l&#39;exemple type d&#39;un site qui reste ouvert longtemps dans un onglet&#44; permettant &#224; la fuite de continuer son travail de sape tranquillement&#46;<br/>&#13;&#10;<br/>&#13;&#10;De bons r&#233;sultats pour le moment<br/>&#13;&#10;<br/>&#13;&#10;Au final&#44; la consommation de m&#233;moire vive de Firefox a &#233;t&#233; attaqu&#233;e et r&#233;duite sur plusieurs fronts&#46; Des mesures r&#233;alis&#233;es par Stuart Parmenter&#44; ing&#233;nieur chez Mozilla&#44; indique ainsi qu&#39;au terme des tests effectu&#233;s&#44; Firefox 3 termine la course avec une consommation 60 &#37; inf&#233;rieure &#224; celle de Firefox 2&#46; Avec moins de 100 Mo de m&#233;moire vive utilis&#233;e&#44; il est &#233;galement loin d&#39;Internet Explorer 7 qui finit avec presque 500 Mo&#46;<br/>&#13;&#10;<br/>&#13;&#10;&#13;&#10;<br/>&#13;&#10;Des mesures qu&#39;il va bien s&#251;r falloir contr&#244;ler&#44; mais il est clair que la r&#233;cente b&#234;ta 4 de Firefox 3 affiche un mieux certain vis&#45;&#224;&#45;vis de ses pr&#233;d&#233;cesseurs&#44; surtout la version 2&#46;0&#46; Une b&#234;ta 5 sera bient&#244;t disponible&#44; et gageons qu&#39;elle devrait encore amener son lot d&#39;am&#233;liorations&#46; Tous les travaux sont r&#233;alis&#233;s dans le cadre du d&#233;veloppement de la version 1&#46;9 du moteur Gecko&#46; Firefox 4 sera bas&#233; sur Gecko 2&#46;0&#44; et la diff&#233;rence devrait &#234;tre notable dans bien des domaines &#40;projet Mozilla 2&#46;0&#41;&#46;<br/><br/><br/>
	</small>
	</p>
	</card> 
	</wml>