2016-12-21 1 views
0

Dans un exécutable de kiosque que je construis dans Adobe Animate (Flash) J'utilise un composant FLVPlayback comme un juke-box vidéo. Conception simple: une vidéo d'écran d'accueil en boucle, recouverte de boutons qui permutent la source vidéo, puis à la fin de la vidéo d'accueil.Si je boucle continuellement une vidéo Adobe Animate (Flash), cela causera-t-il des problèmes de mémoire?

Mon code ActionScript pour cette boucle comprend un message de trace:

video_viewer.addEventListener(fl.video.VideoEvent.COMPLETE, videoSwitcher); 
function videoSwitcher(e:Event) 
{ 
    if (video_viewer.source == "video/Home.mp4") { 
    trace("I'm Home and I'm looping!");   
    } else { 
    trace(video_viewer.source + " is done so I'm switching to Home!"); 
    video_viewer.source = "video/Home.mp4"; 
    } 
    video_viewer.seek(0); 
    video_viewer.play(); 
} 

Ma question est, si les boucles vidéo à domicile des centaines ou des milliers de fois par jour en cours d'exécution au salon professionnel du client, sera la trace répétée messages éventuellement causer des problèmes de mémoire?

Répondre

0

J'ai récemment effectué un bref test pour être sûr que Flash Player utilise plus de mémoire à long terme et appel répété de la fonction trace().

scénario de test:
400 x 400 à 120 fps stade
un jeu vidéo de façon répétée 5 minutes et tracée sur chaque trame entrer.

import flash.events.Event; 

this.addEventListener(Event.ENTER_FRAME,fps); 
function fps(e){ 
    trace("A really long sentence to test whether trace eats up memory over time."); 
} 

Note: le code de bouclage vidéo est similaire au code mentionné dans OP afin de ne pas inclus dans cette réponse.

1er test dans Adobe Animate en appuyant sur les touches du clavier <Ctrl>+<Enter>.
Constatation: Maintenu sur l'augmentation de l'utilisation de la mémoire à long terme (~ 54 Mo en 2 minutes).

2ème test après la publication d'un swf avec "Omettre les instructions de suivi" désactivé dans les paramètres de publication.
Constatation: Conserver l'utilisation de la mémoire à long terme, même si nous ne pouvons pas voir la sortie de trace (~ 36 Mo en 2 minutes). Final Test après la publication d'un swf avec "Omit instructions de suivi" activé dans les paramètres de publication. Maintenu sur l'utilisation croissante de mémoire atteignant ~ 25MB usuage et a continué à fluctuer entre 25MB et 28MB, mais n'a jamais eu plus de 28MB. Donc, je conclus que nous devrions activer l'option "Omettre les instructions de suivi" dans les paramètres de publication pour éviter les fuites de mémoire involontaires dues à trace(). Je suppose, quand il est désactivé, le journal trace() est conservé à des fins de télémétrie.

PS: MAV utilisent les éboueurs (GC), donc il peut y avoir d'autres facteurs qui contribuent à certains objets ne pas être GCed même après ne pas être utilisé, ce qui peut en fin de compte rendre votre fichier swf plus monopolisant mémoire. Consultez ce post pour en savoir plus sur la gestion de la mémoire: Actionscript memory management, garbage collection