Kao sto rekoh u opisu, jako interesantni aspekti GC-a o kojima nisam razmisljao ranije.
Zasto nisam razmisljao? Zato sto su uzimane zdravo za gotovo i mogu se pronaci i u Flash helpu.
Kao npr. ovaj primer koji je covek okacio u ovom clanku dole.
Svako ko je radio sa XML-om, bar jednom je napisao ovakav kod.
CODE
my_mc.onPress = function()
{
var my_xml = new XML();
my_xml.ignoreWhite = true;
my_xml.onLoad = function(success)
{
trace("success!, parse this.");
};
my_xml.load("some.xml");
}
{
var my_xml = new XML();
my_xml.ignoreWhite = true;
my_xml.onLoad = function(success)
{
trace("success!, parse this.");
};
my_xml.load("some.xml");
}
Medjutim, gde je problem ovde?
Problem je u tome sto je poziv asinhron i sto je my_xml
Ona zaokupira memoriju, dobije referencu na novokreirani XML objekat, zatim se preko nje poziva load metoda i onda se funkcija onPress zavrsi i, logicno, my_xml varijabla umre, jer je bila lokalna.
Medjutim, GC kasni, i zbog toga ova varijabla ne umire. Pre nego sto je GC zakaci, XML stize i poziva se onLoad metoda preko reference koja vise nije validna.
Prevarismo GC, a i dobili smo XML, zar ne?
Nije bas legalan trik, tj. vrlo je prljav, ali kao sto rekoh, svi su prihvatili ovo zdravo za gotovo.
Mozda ne bi bilo lose zaobilaziti ovo u buducnosti.
Uglavnom, izgleda da to radi tako i u AS3, ali ako neko pretera sa kolicinom podataka, doci ce GC (koji je osetljiv na velicinu i kolicinu podataka) i cao.
Clanak.
2.
Btw, kad smo vec kod Garbage Collectora, evo jednog zanimljivog benchmarka iz 2006.
Iz nekog razloga, ovaj novi GC, za koji je onaj Uro Tinic jos 2005 rekao da je masterpiece, ne ocisti sve.
Zasto je to tako, beats me, ali sam i sam pravio neke testove (2 godine kasnije) u Playeru 9 i nisam zadovoljan.
3.
Btw, jos jedna stvar koju je neko pitao na tom (zadnjelinkovanom) blogu. Interesantno pitanje koje i mene muci:
CITAT (Marcelo)
While porting some components so they can take advantage of the new methods of FP8, i saw the following:
If you enable the redraw regions, and use scrollRect somewhere, you will see that the player redraws the complete clipped
movieclip, instead of the clipped region only.
What are the benefits if the player has to redraw the whole screen? (assuming you clipped content has the same size as your
stage, and of course the clipped area is smaller).
If you enable the redraw regions, and use scrollRect somewhere, you will see that the player redraws the complete clipped
movieclip, instead of the clipped region only.
What are the benefits if the player has to redraw the whole screen? (assuming you clipped content has the same size as your
stage, and of course the clipped area is smaller).
CITAT (Uro Tinic)
Marcelo: This is a known bug we haven't been able to fix in this release. It has now become much more visibile since you can display redraw regions. I hope we can tackle this next time around.
To je bilo 2005. Hmm...

