PiergiorgioNiero<br />My App is a Flash! <br />
2<br />Speaker bio – PiergiorgioNieroTWITTER: @pigiuz<br />Flash Platform developer since Macromedia® Flash 4<br />Softwar...
Session Topic - Garbage Collector<br /><ul><li>Performance
Stabilità</li></li></ul><li>4<br />Mr Garbage Collector – John McCarty<br />ProfessoreEmeritoalla Stanford University<br /...
5<br />Cos’è e cosafail GC?<br /><ul><li>Sostituisce lo sviluppatorenelle operazionidigestionedellamemoria
Determina un cambiamentonettonello stile diprogrammazione:
Daterminazionedeterministica a una “non deterministic object finalization”</li></ul>Recupera le risorse allocate da questi...
6<br />GC – Pros and Cons<br /><ul><li>Consumodirisorsecomputazionaliminimocostante per deciderequando far partireilproces...
Impossibiledeterminarequandoil GC libererà la memorianè quantaqualememorialibererà
Frammentazionedellamemoria e conseguentecalodi performances
“Embarassing pause”</li></ul>Piùdifficilecadere in erroridigestionedellamemoriaquali:<br />DANGLING POINTERS<br />DOUBLE F...
7<br />Capireil GC – Determinare la raggiungibilitàdi un oggetto<br />Un oggetto è raggiungibilequando a runtime c’èalmeno...
8<br />Capireil GC – Reference Count<br />Ognioggetto ha assegnato un contatoredeipuntatori ad esso<br />L’oggettodiventa ...
9<br />Capireil GC – Mark and Sweep<br />Ognioggetto in memoria ha un flag “in use” assegnatodal GC<br />Il GC iteraricors...
10<br />Capireil GC – Weak References<br /><ul><li>Weak reference: riferimenti “speciali” chepermettonodiraggiungere un og...
11<br />Imboccareil GC – IDispose<br />Il GC determinaglioggettidaliberaretramite reference count<br />Creazionedi un dest...
Upcoming SlideShare
Loading in …5
×

Flashcamp Milan 2011 - Garbage Collector in the Flash Platform

5,728 views
5,683 views

Published on

Garbage Collector in the Flash Platform.
Examples and details at www.flashfuck.it

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
5,728
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Flashcamp Milan 2011 - Garbage Collector in the Flash Platform

  1. 1. PiergiorgioNiero<br />My App is a Flash! <br />
  2. 2. 2<br />Speaker bio – PiergiorgioNieroTWITTER: @pigiuz<br />Flash Platform developer since Macromedia® Flash 4<br />Software Engineer at Kaseya Corp( www.kaseya.com )<br />Co-Manager of The Flash Mind – AUG Milano Italy( www.theflashmind.com )<br />Casual tech blogger – FlashFuck.it( www.flashfuck.it )<br />
  3. 3. Session Topic - Garbage Collector<br /><ul><li>Performance
  4. 4. Stabilità</li></li></ul><li>4<br />Mr Garbage Collector – John McCarty<br />ProfessoreEmeritoalla Stanford University<br />Inventore del termine “IntelligenzaArtificiale” (1955)<br />Inventore del linguaggio Lisp (1959)<br />…e del suosistemadi Garbage Collection<br />
  5. 5. 5<br />Cos’è e cosafail GC?<br /><ul><li>Sostituisce lo sviluppatorenelle operazionidigestionedellamemoria
  6. 6. Determina un cambiamentonettonello stile diprogrammazione:
  7. 7. Daterminazionedeterministica a una “non deterministic object finalization”</li></ul>Recupera le risorse allocate da questi oggetti<br />Identifica oggetti non più in uso<br />Libera le risorse e le rende disponibili<br />
  8. 8. 6<br />GC – Pros and Cons<br /><ul><li>Consumodirisorsecomputazionaliminimocostante per deciderequando far partireilprocessodi collection
  9. 9. Impossibiledeterminarequandoil GC libererà la memorianè quantaqualememorialibererà
  10. 10. Frammentazionedellamemoria e conseguentecalodi performances
  11. 11. “Embarassing pause”</li></ul>Piùdifficilecadere in erroridigestionedellamemoriaquali:<br />DANGLING POINTERS<br />DOUBLE FREE<br />MEMORY LEAKS<br />
  12. 12. 7<br />Capireil GC – Determinare la raggiungibilitàdi un oggetto<br />Un oggetto è raggiungibilequando a runtime c’èalmenounavariabilepuntatoreche conduce ad esso<br />Esistono due tipi di garbage:<br />SINTATTIC GARBAGE: non esistepiù un puntatorevalidoall’oggetto (risolvibile a compile time)<br />SEMANTIC GARBAGE: ipuntatorivalidi ad un oggettoesistonoall’internodi un bloccodicodice<br />
  13. 13. 8<br />Capireil GC – Reference Count<br />Ognioggetto ha assegnato un contatoredeipuntatori ad esso<br />L’oggettodiventa “garbaggiabile” quandoilsuocontatore è a zero:<br />VANTAGGIO: è quantopiùprossimo ad unagestionedeterministicadellamemoria<br />SVANTAGGIO: se due oggettisonocollegatitralororeciprocamente e non c’ènessunpuntatoreaccessibiledalprogramma per recuperarliilrisultato è un MEMORY LEAK<br />A 1<br />B 1<br />LEAK!<br />Singleton<br />A 1<br />
  14. 14. 9<br />Capireil GC – Mark and Sweep<br />Ognioggetto in memoria ha un flag “in use” assegnatodal GC<br />Il GC iteraricorsivamentetuttiglioggetti e partendodainodi root e marca “in use” quelliraggiungibili<br />Vieneeffettuataunasecondaiterazionedituttiglioggetti in memoria e vieneliberata la memoriadeglioggetti non “in use”<br />To be collected!<br />C 2<br />A 1<br />A 1<br />D 1<br />B 1<br />ROOT<br />B 1<br />To be collected!<br />E 0<br />ROOT<br />
  15. 15. 10<br />Capireil GC – Weak References<br /><ul><li>Weak reference: riferimenti “speciali” chepermettonodiraggiungere un oggettosenzaincrementareilsuo reference count</li></ul>Weak Dictionary<br />Normal Dictionary<br />keys<br />keys<br />values<br />values<br />A 0<br />A 1<br />“ciao”<br />“ciao”<br />B 0<br />B 1<br />1<br />1<br />C 0<br />C 1<br />sprite<br />sprite<br />D 0<br />D 1<br />array<br />array<br />
  16. 16. 11<br />Imboccareil GC – IDispose<br />Il GC determinaglioggettidaliberaretramite reference count<br />Creazionedi un destructor custom (rubiamodac++ e daBitmapData.dispose())<br />
  17. 17. 12<br />Alleggerireil GC – Blitting<br />Il GC devepercorrerericorsivamentetuttiglioggettipartendodalle root<br />Lo stage del nostroswf è una root sullaqualepoggia la display list<br />Diminuiamonotevolmenteilnumerodioggettidapercorrere:<br />Riconduciamo la display list in un unico Bitmap ( display list != root )<br />Raggruppiamoglioggettisorgente ( sprite sheet )<br />Mario Sprite Sheet<br />Super Mario Bros Level - Blitted<br />
  18. 18. 13<br />Non utilizzareil GC – Memory Pool<br />Il GC arrestailsistemamentrelibera la memoria<br />Il GC determinaglioggettidaliberaretramite reference count<br />Creazioneglioggettitramite un object pool<br />Riduciamo al minimoglioggettidariciclarestabilizzandol’usodellamemoria<br />Pre-allocazionedeglioggetti<br />Riduciamo al minimo la creazionedinuovioggettiriutilizzandosempreglistessi<br />
  19. 19. Thank you<br />

×