Banc d'essai du garbage collector du lecteur Flash 8

Created : Dimanche 25 Septembre 2005
Last modified : dimanche 29 octobre 2006 18:53:36

Objectif et mise en place

Le but de ce banc d'essai est d'observer comment se comporte le nouveau garbage collector du lecteur Flash 8 face à celui du lecteur Flash 7 quand on remplit un trés grand tableau avec pour chaque entrée une nouvelle instance d'un objet et qu'on vide le tableau par la suite provoquant normalement la destruction complète des objets déclarés dans le tableau.

Le test a été fait sur une machine sous Windows 2000 SP4 avec 1Go de RAM en dual-channel et un processeur AMD 3000+.

Télécharger le fichier .fla du banc d'essai

Attention :
Ce banc d'essai met à rude épreuve les ressources utilisées par le processeur et la mémoire de votre machine. Ne le lancez que si vous comprenez le code qu'il contient et si vous savez exactement ce que vous faites.

Résultats

Résultats du banc d'essai mettant à l'épreuve le Garbage Collector du lecteur Flash 8

Après observation des résultats du banc d'essai, on peut voir que le garbage collector du lecteur Flash 8 (testé avec la version WIN 8,0,22,0) fonctionne effectivement différemment de celui du lecteur Flash 7 (testé avec la version WIN 7,0,19,0) comme nous l'avait annoncé Tinic Uro sur son blog dans le billet qui m'a motivé à faire ce test. À noter qu'il fonctionne de la même manière quelle que soit la version du SWF lu.

Avant de tirer des conclusions hâtives il faut bien garder à l'esprit que ce test repose sur une utilisation éxagéree à l'extrème des opérations utilisées normalement dans une application, il consomme 627Mo de mémoire soit largement 10 à 20 fois plus qu'une application Flash ordinaire, les variations observées par la gestion du garbage collector sur le CPU sont donc à minimiser d'autant si ce n'est plus pour coller à la réalité.

On observera pour commencer que lors du remplissage du tableau géant, le lecteur Flash 8 se comporte mieux et consomme moins de mémoire que le lecteur Flash 7(FP8 435Mo / FP7 627Mo). On peut probablement mettre ça sur le compte du nouveau garbage collector puisque l'opération ne fait rentrer en jeu aucun autre paramètre lié à la gestion des piles dans les appels à la méthode de remplissage du tableau par exemple.

Par contre, lorsque le tableau est plein et que l'application travaille en tâche de fond (3ème étape), il est vraiment étrange que le nouveau GC se batte sans cesse pour essayer de vider la mémoire en utilisant autant de CPU.

Étonnamment on peut observer (4ème étape) que le nouveau garbage collector échoue à vider complètement la mémoire après suppression du tableau alors que le lecteur Flash 7, même s'il le fait en consommant 100% du CPU le temps du vidage, réussit quasiment à revenir au niveau initial de mémoire consommée par l'application à son ouverture.

  wordpress rss rss français rss english xhtml 1.1 css 2.0 wdg