2. 2Speaker bio PiergiorgioNieroTWITTER: @pigiuzFlash Platform developer since Macromedia速 Flash 4Software Engineer at Kaseya Corp( www.kaseya.com )Co-Manager of The Flash Mind AUG Milano Italy( www.theflashmind.com )Casual tech blogger FlashFuck.it( www.flashfuck.it )
4. Stabilit4Mr Garbage Collector John McCartyProfessoreEmeritoalla Stanford UniversityInventore del termine IntelligenzaArtificiale (1955)Inventore del linguaggio Lisp (1959)e del suosistemadi Garbage Collection
5. 5Cos竪 e cosafail GC?Sostituisce lo sviluppatorenelle operazionidigestionedellamemoria
7. Daterminazionedeterministica a una non deterministic object finalizationRecupera le risorse allocate da questi oggettiIdentifica oggetti non pi湛 in usoLibera le risorse e le rende disponibili
8. 6GC Pros and ConsConsumodirisorsecomputazionaliminimocostante per deciderequando far partireilprocessodi collection
12. 7Capireil GC Determinare la raggiungibilitdi un oggettoUn oggetto 竪 raggiungibilequando a runtime c竪almenounavariabileuntatoreche conduce ad essoEsistono due tipi di garbage:SINTATTIC GARBAGE: non esistepi湛 un puntatorevalidoalloggetto (risolvibile a compile time)SEMANTIC GARBAGE: ipuntatorivalidi ad un oggettoesistonoallinternodi un bloccodicodice
13. 8Capireil GC Reference CountOgnioggetto ha assegnato un contatoredeipuntatori ad essoLoggettodiventa garbaggiabile quandoilsuocontatore 竪 a zero:VANTAGGIO: 竪 quantopi湛prossimo ad unagestionedeterministicadellamemoriaSVANTAGGIO: se due oggettisonocollegatitralororeciprocamente e non c竪nessunpuntatoreaccessibiledalprogramma per recuperarliilrisultato 竪 un MEMORY LEAKA 1B 1LEAK!SingletonA 1
14. 9Capireil GC Mark and SweepOgnioggetto in memoria ha un flag in use assegnatodal GCIl GC iteraricorsivamentetuttiglioggetti e partendodainodi root e marca in use quelliraggiungibiliVieneeffettuataunasecondaiterazionedituttiglioggetti in memoria e vieneliberata la memoriadeglioggetti non in useTo be collected!C 2A 1A 1D 1B 1ROOTB 1To be collected!E 0ROOT
16. 11Imboccareil GC IDisposeIl GC determinaglioggettidaliberaretramite reference countCreazionedi un destructor custom (rubiamodac++ e daBitmapData.dispose())
17. 12Alleggerireil GC BlittingIl GC devepercorrerericorsivamentetuttiglioggettipartendodalle rootLo stage del nostroswf 竪 una root sullaqualepoggia la display listDiminuiamonotevolmenteilnumerodioggettidapercorrere:Riconduciamo la display list in un unico Bitmap ( display list != root )Raggruppiamoglioggettisorgente ( sprite sheet )Mario Sprite SheetSuper Mario Bros Level - Blitted
18. 13Non utilizzareil GC Memory PoolIl GC arrestailsistemamentrelibera la memoriaIl GC determinaglioggettidaliberaretramite reference countCreazioneglioggettitramite un object poolRiduciamo al minimoglioggettidariciclarestabilizzandolusodellamemoriaPre-allocazionedeglioggettiRiduciamo al minimo la creazionedinuovioggettiriutilizzandosempreglistessi