Les navigateurs sont comme les gens - ils vieillissent, ils obtiennent pléthorique, et ils se plaquer pour les modèles plus jeunes et plus maigres. Firefox n'est pas seulement un navigateur, c'est un écosystème. Bien que je pense que les versions récentes sont assez gonflées, le produit de base est généralement stable.
Cependant, firefox est un écosystème/plate-forme pour:
1) plug-ins mal écrite
2) code JavaScript mal écrite qui exécute en son sein. 3) Adobe flash en tant que plate-forme pour la vidéo poids lourd et pour les scripts publicitaires mal écrits tels que 'frapper Oussama ben Laden avec un canard pour réduire votre taux hypothécaire et recevoir un iPod gratuit * (participation requise).
4) Quicktime et autre lecteur multimédia.
5) Du code Java intégré.
La description d'une fuite de mémoire suggère un script exécutant un code malveillant ou un outil tiers demandant plus de mémoire. Si vous utilisez Flash sur un Mac, c'est presque le cas avec 90% d'utilisation du processeur. L'objectif de la plupart des langages de programmation n'est pas de vous sauver, mais de vous donner des outils pour vous sauver. Vous pouvez écrire du code corrompu et corrompu avec des fuites de mémoire dans n'importe quelle langue, y compris celles avec la récupération de place.Les outils tiers ne sont généralement pas aussi bien testés que la plate-forme elle-même. Les pages Web qui essaient d'en faire trop ne sont pas rares non plus.
Si vous voulez faire une expérience pour démontrer ceci, obtenez un mac avec Firefox et allez sur un site bien écrit comme Stack Overflow et passez une heure. Votre utilisation de la mémoire ne devrait pas augmenter beaucoup. Ensuite, passez 5 minutes à visiter des pages aléatoires sur Myspace.
Permettez-moi maintenant essayer de répondre à vos questions en fonction de mes suppositions puisque je ne suis pas familier avec le code source
- Quand je ferme tous les onglets, pourquoi ne fait pas l'utilisation de la mémoire aller tout le bas?
considérant que chaque instance du navigateur est un processus indépendant avec sa propre mémoire, les onglets dans une seule fenêtre sont tous dans le même processus. Firefox avait l'habitude d'avoir une sorte de mise en cache en mémoire et la simple fermeture d'une tabulation ne supprime pas immédiatement les informations pertinentes du cache en mémoire. Si vous avez rouvert un onglet sur le même site, vous obtiendrez peut-être de meilleures performances. Il y avait une option avancée pour vous permettre de le désactiver, quelque chose comme browser.cache.memory.enable. Ou recherchez simplement la désactivation du cache mémoire.
* Why is there no limits on extensions/themes/plugins memory usage?
Pour la même raison que Windows ou Linux ne dispose pas d'un processus de vérification sur les applications que vous pouvez exécuter sur eux. C'est un environnement ouvert et vous assumez le risque. Si vous voulez un environnement dans lequel les applications et les extensions sont « validées », Apple pourrait être la voie à suivre :)
* Why does the memory usage increase if it's left open for long periods of time?
Tous les calculs et les actions dans un script ont des manifestations visuelles. Un script pourrait être en train de faire des choses en arrière-plan (comme demander des matériaux supplémentaires, pré-télécharger des choses, juste des bogues) même si vous ne le voyez pas.
* Why are memory leaks so difficult to find and fix?
C'est une question de comptabilité. Pensez à tous les objets que vous avez empruntés (même un stylo) ou que quelqu'un vous a emprunté toute votre vie. Sont-ils tous pris en compte? Les fuites de mémoire sont les mêmes (vous empruntez la mémoire du système), sauf que vous passez des objets. Ensuite, regardez les choses sur votre bureau, avez-vous laissé quelque chose traîner parce que vous pourriez en avoir besoin bientôt, même si vous ne le ferez probablement pas? même histoire.
cette question est un peu large. Firefox souffre de fuites de mémoire, il est préférable pour vous de lire sur ce sujet. La fermeture des onglets ne libère pas nécessairement la mémoire allouée à cet onglet. –
et votre question de programmation est? – KevinDTimm
@KevinDTimm c'est que la dernière balle dans la liste – David