Contexte: Je travaille actuellement sur un site intranet qui utilise la bibliothèque MochaUI (travail du virtual desktop demo). J'utilise Mootools 1.2.4 et MochaUI 0.9.7. Les fenêtres qui sont ouvertes dans mon implémentation de "bureau virtuel" chargent leur contenu via les iframes. Certaines des pages chargées sont assez lourdes en termes de css et de script, il est donc important que les objets Window soient correctement collectés lorsque l'utilisateur ferme une fenêtre. Ceci est ostensiblement pris en charge par la bibliothèque (il fait un bon travail lors de l'utilisation de Firefox).Chrome ne parvient pas à libérer de la mémoire, la collecte des ordures ne se produit pas comme prévu (bibliothèque Mootools/MochaUI)
Mise à jour La question initialement affichée était devenue trop longue à cause des modifications/mises à jour ultérieures. Le titre n'était plus précis, alors j'ai changé ça aussi. Aussi, voir ma réponse ci-dessous pour une solution partielle.
Voici les points essentiels:
Chrome comme autant fout:
- Chrome ne parvient pas à libérer la mémoire allouée pour les objets de fenêtre MochaUI quand ils sont fermés. Au lieu de cela, l'utilisation de la mémoire de Chrome se fige (littéralement) au niveau atteint après que la fenêtre ait fini de charger son contenu iframe, définissant une limite inférieure sur l'utilisation de la mémoire jusqu'à ce que la page soit actualisée.
- La mémoire utilisée par le processus continue d'augmenter avec les ouvertures/fermetures de fenêtres suivantes. Finalement, un certain type de plafond est atteint, et l'utilisation de la mémoire arrête de grimper aussi fortement/commence à osciller au lieu de sauter de façon spectaculaire.
- Ce problème est plus apparent lorsque les fenêtres en question chargent un contenu iframe assez lourd (en termes de mémoire). La fenêtre que j'utilise pour tous les tests charge une page de 580 kb (non mise en cache) dans son iframe.
Étrangement, la collecte des ordures prévu -t lieu, quand
- le navigateur est ensuite réduite au minimum
- un autre onglet est ouvert dans la même fenêtre du navigateur
- une Mémoire Timeline est en cours d'enregistrement dans Developer Tools. (option comédie)
- Ce comportement suggère-t-il des approches possibles pour résoudre # 1?
question très intéressante et une bonne explication. Je ne sais pas exactement quel est le coupable, même si je vous préviens qu'il y a une chance qu'il n'y ait pas de solution. Ou s'il y en a un, pas facile. Google adopte une approche très fainéante de la programmation. Bien que Chrome semble charger le plus rapidement et utiliser moins de mémoire de tous les principaux navigateurs, il est criblé de bugs dont je ne rêverais pas dans Firefox ou Opera. Pareil avec Android vs iOS. – stevendesu
J'ai posté une version très détaillée/longue de cette question sur le forum d'aide Google Chrome pour les webmasters et je n'ai pas reçu de réponse, alors cette fois-ci j'ai décidé de la rendre plus précise! Je suis d'accord que cela semble être un bug (ou une bizarrerie de la façon dont Chrome détermine quels objets doivent être collectés). C'est comme s'il y avait un niveau plus élevé de ramasse-miettes qui se produit lorsque Chrome est réduit, et mes objets de fenêtre ne sont pas complètement vides par les normes de Chrome, peut-être. Merci pour le commentaire! – freenatec
@steven_desu: Google adopte non seulement une approche paresseuse à l'égard de la programmation, mais elle semble également apathique à l'égard de tout type de plaintes ou de problèmes que ses utilisateurs pourraient commettre. –