Flex Profiler – Optimiser votre application Flex avec le Profiler de Flex Builder 3 (Partie 2)
Flex Profiler – Optimiser votre application Flex avec le Profiler de Flex Builder 3 (Partie 1)
Détecter une fuite mémoire grâce aux Memory Snapshot
On va maintenant utiliser notre application pour voir où se situe notre Memory Leak. Ouvrez l'application en mode Flex Profiler et ouvrez/fermez plusieurs fois une fenêtre de dialogue. Normalement, une fois que l'on a fait PopUpManager.removePopUp(this), l'objet LeakyDialog (la fenêtre) devrait être vidé de la mémoire. Regarder la partie Live Objects, qui compte les instance d'objets dans votre application. Vous devriez avoir quelque chose comme ceci:
Comme vous pouvez le constater, on a maintenant 5 (+ ou – suivant le nombre de fois où vous avez ouvert/fermé la fenêtre) instances de LeakyDialog (cf. colonne Instances). Vous pouvez essayer de lancer une Garbage Collection sur votre application, il y aura toujours autant d'instances de LeakyDialog.
Prenez un Memory Snapshot pour pouvoir analyser le contenu de la mémoire et les références vers ces LeakyDialog. Cliquez donc le bouton "Take Memory Snapshot" (voir liste dans la partie 1) pour pouvoir analyser les résultats en détails.
Flex Profiler – Optimiser votre application Flex avec le Profiler de Flex Builder 3 (Partie 1)
Dans les précédents tutoriaux sur le Garbage Collector AS3 et la gestion des ressources dans une application Flex, vous avez pu voir comment était gérée la mémoire dans une application Flex (ou Adobe Air). Pour traquer ces fuites mémoire (Memory Leaks), vous pourriez regarder gonfler/dégonfler votre navigateur dans le gestionnaire des tâches ou bien utiliser la variable System.totalMemory offerte par flash qui indique quelle place prend votre application en mémoire. Cette technique est plutôt archaïque et ne peux pas vous permettre de gérer efficacement la mémoire utilisée par votre application en temps réel.
Heureusement, Flex Builder 3 propose un outil très utile appelé Flex Profiler. Il permet (entre autres) de visualiser le nombre d'instance et la taille en mémoire de tous les objets de votre application durant son exécution.
Dans cet article, je vais vous montrer comment utiliser ce Flex Profiler afin de visualiser les fuites mémoire de votre application. Pour que tout le monde parte de la même base, je vais expliquer le fonctionnement du Flex Profiler sur un projet crée pour l'occasion.
Télécharger le projet exemple du Flex Profiler FB3
Pour utiliser ce projet, créez simplement un nouveau projet nommé ProfilerScenarios dans Flex Builder 3, dezippez l'archive et remplacez le dossier src.
Flex ActionScript – Test des performances de l'ActionScript 3
Il y a quelques jours, je suis tombé sur un article très intéressant sur le blog de businessintelligence.me, qui a crée un outil permettant de mesurer les performances de certaines portions de code en ActionScript 3 (AS3). Par exemple, il compare différentes manières d'itérer sur un tableau. Exemple simple, dans une boucle for(), si vous itérez sur un Number ou sur un int, cela peut être deux fois plus long. Le test comporte pour l'instant 9 tests différents de code ActionScript, en vous donnant le code des différents tests effectués.
ActionScript 3 Performance Tester
Parmi ces tests, vous pourrez retrouver comment:
- Incrémenter une variable (i++, i = i+1, i +=1)
- Division (i/2, i*0.5, i<<1)
- Parcours de structures (Array, Object, Dictionary)
- Boucles (for, while, …)
- … et même vos propres morceaux de code (beta)
Composant Flex – TextInput avec message quand le champ est vide (prompt)
Lorsque vous construisez un formulaire en Flex, vous avez de manière basique, une liste de champs avec des textes expliquant comment remplir ces champs. Vous pouvez le faire en définissant des <mx:FormHeading> ou bien en remplissant la propriété label des <mx:FormItem>.
Voir un exemple de <mx:Form> avec FormHeading et FormItem
Mais parfois, vous aurez besoin d'indiquer plus d'informations sur un champ en particulier. Vous pourriez pour cela mettre une valeur par défaut mais quand vous allez récupérer la valeur du champ au moment du post du formulaire, vous allez récupérer la valeur par défaut, ce qui n'est pas le comportement souhaité.
Heureusement, la FlexLib contient un composant appelé PromptingTextInput, qui a exactement le comportement souhaité, il est vraiment parfait pour la construction d'un formulaire en Flex. Il affiche dans votre TextInput, un message légèrement grisé en italique et quand vous cliquez sur le champ (ou que ce champ prend le focus), ce message disparait pour laisser l'utilisateur taper.
Flex / Air – Erreur n°2032 lors de l'installation d'une application Adobe Air [Résolu]
Pour le déploiement d'une application Adobe Air sur Internet, j'ai utilisé l'application Badger (très pratique), qui permet de personnaliser une petite animation flash qui va se charger de gérer l'installation de l'appli Air sur le poste client (et le download du plug-in Air si besoin est). Après déploiement sur mon serveur web, j'essaie d'installer l'application sur mon poste et l'installation stoppe avec le message en bas à droite:
Erreur# 2032
Après vérification sur l'aide d'Adobe, l'erreur 2032 est une Stream Error, comme celle qui est lancée lorsque l'on essaie d'accéder à un fichier (en download) qui n'existe pas. Le problème venait en fait de la configuration de mon application, j'avais fait une erreur au niveau du chemin (URL) vers mon fichier .air. En effet, l'application Badger ne copie pas le fichier local sur le serveur, mais fait juste la liaison, il faut uploader le fichier .air soi-même.
Si vous avez la même erreur, corrigez le descripteur de votre installeur (le chemin d'accès vers le fichier Adobe Air avec Badger) et tout devrait rentrer dans l'ordre.
De même, il ne faut pas utiliser d'URL relative, donnez une URL complète sinon votre application ne fonctionnera pas






