flashcamp milan 2011 - garbage collector in the flash platform

16
© 2011 Adobe Systems Incorporated. All Rights Reserved. Piergiorgio Niero My App is a Flash!

Upload: piergiorgio-niero

Post on 13-Dec-2014

5.300 views

Category:

Technology


1 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Flashcamp Milan 2011 - Garbage Collector in the Flash Platform

© 2011 Adobe Systems Incorporated. All Rights Reserved.

Piergiorgio NieroMy App is a Flash!

Page 2: Flashcamp Milan 2011 - Garbage Collector in the Flash Platform

© 2011 Adobe Systems Incorporated. All Rights Reserved. 2

Speaker bio – Piergiorgio Niero TWITTER: @pigiuz

Flash Platform developer since Macromedia® Flash 4

Software 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 )

Page 3: Flashcamp Milan 2011 - Garbage Collector in the Flash Platform

© 2011 Adobe Systems Incorporated. All Rights Reserved.

Session Topic - Garbage Collector

Performance Stabilità

Page 4: Flashcamp Milan 2011 - Garbage Collector in the Flash Platform

© 2011 Adobe Systems Incorporated. All Rights Reserved. 4

Mr Garbage Collector – John McCarty

Professore Emerito alla Stanford University Inventore del termine “Intelligenza Artificiale” (1955) Inventore del linguaggio Lisp (1959) …e del suo sistema di Garbage Collection

Page 5: Flashcamp Milan 2011 - Garbage Collector in the Flash Platform

© 2011 Adobe Systems Incorporated. All Rights Reserved. 5

Cos’è e cosa fa il GC?

Identifica oggetti non più in uso

Recupera le risorse allocate

da questi oggetti

Libera le risorse e le rende

disponibili

Sostituisce lo sviluppatore nelle operazioni di gestione della memoria

Determina un cambiamento netto nello stile di programmazione:

Da terminazione deterministica a una “non deterministic object finalization”

Page 6: Flashcamp Milan 2011 - Garbage Collector in the Flash Platform

© 2011 Adobe Systems Incorporated. All Rights Reserved. 6

GC – Pros and Cons

Più difficile cadere in errori di gestione della memoria quali: DANGLING POINTERS DOUBLE FREE MEMORY LEAKS

Consumo di risorse computazionali minimo costante per decidere quando far partire il processo di collection

Impossibile determinare quando il GC libererà la memoria nè quanta\quale memoria libererà

Frammentazione della memoria e conseguente calo di performances

“Embarassing pause”

Page 7: Flashcamp Milan 2011 - Garbage Collector in the Flash Platform

© 2011 Adobe Systems Incorporated. All Rights Reserved. 7

Capire il GC – Determinare la raggiungibilità di un oggetto

Un oggetto è raggiungibile quando a runtime c’è almeno una variabile\puntatore che conduce ad esso Esistono due tipi di garbage:

SINTATTIC GARBAGE: non esiste più un puntatore valido all’oggetto (risolvibile a compile time) SEMANTIC GARBAGE: i puntatori validi ad un oggetto esistono all’interno di un blocco di codice

Page 8: Flashcamp Milan 2011 - Garbage Collector in the Flash Platform

© 2011 Adobe Systems Incorporated. All Rights Reserved. 8

Capire il GC – Reference Count

Ogni oggetto ha assegnato un contatore dei puntatori ad esso L’oggetto diventa “garbaggiabile” quando il suo contatore è a zero:

VANTAGGIO: è quanto più prossimo ad una gestione deterministica della memoria SVANTAGGIO: se due oggetti sono collegati tra loro reciprocamente e non c’è nessun puntatore accessibile dal

programma per recuperarli il risultato è un MEMORY LEAK

A 1 B 1 LEAK!

A 1 Singleton

Page 9: Flashcamp Milan 2011 - Garbage Collector in the Flash Platform

© 2011 Adobe Systems Incorporated. All Rights Reserved. 9

Capire il GC – Mark and Sweep

Ogni oggetto in memoria ha un flag “in use” assegnato dal GC Il GC itera ricorsivamente tutti gli oggetti e partendo dai nodi root e marca “in use” quelli raggiungibili Viene effettuata una seconda iterazione di tutti gli oggetti in memoria e viene liberata la memoria degli

oggetti non “in use”

A 1 B 1

ROOT

A 1

E 0

D 1

C 2

B 1To be collected!

ROOT

To be collected!

Page 10: Flashcamp Milan 2011 - Garbage Collector in the Flash Platform

© 2011 Adobe Systems Incorporated. All Rights Reserved. 10

Capire il GC – Weak References

Weak Dictionary

A 0

B 0

C 0

D 0

keys“ciao

”1

sprite

array

values

Normal Dictionary

A 1

B 1

C 1

D 1

keys“ciao

”1

sprite

array

values

Weak reference: riferimenti “speciali” che permettono di raggiungere un oggetto senza incrementare il suo reference count

Page 11: Flashcamp Milan 2011 - Garbage Collector in the Flash Platform

© 2011 Adobe Systems Incorporated. All Rights Reserved. 11

Imboccare il GC – IDispose

Il GC determina gli oggetti da liberare tramite reference count Creazione di un destructor custom (rubiamo da c++ e da BitmapData.dispose())

Page 12: Flashcamp Milan 2011 - Garbage Collector in the Flash Platform

© 2011 Adobe Systems Incorporated. All Rights Reserved. 12

Alleggerire il GC – Blitting

Il GC deve percorrere ricorsivamente tutti gli oggetti partendo dalle root Lo stage del nostro swf è una root sulla quale poggia la display list

Diminuiamo notevolmente il numero di oggetti da percorrere: Riconduciamo la display list in un unico Bitmap ( display list != root ) Raggruppiamo gli oggetti sorgente ( sprite sheet )

Mario Sprite Sheet

Super Mario Bros Level - Blitted

Page 13: Flashcamp Milan 2011 - Garbage Collector in the Flash Platform

© 2011 Adobe Systems Incorporated. All Rights Reserved. 13

Non utilizzare il GC – Memory Pool

Il GC arresta il sistema mentre libera la memoria Il GC determina gli oggetti da liberare tramite reference count

Creazione gli oggetti tramite un object pool Riduciamo al minimo gli oggetti da riciclare stabilizzando l’uso della memoria

Pre-allocazione degli oggetti Riduciamo al minimo la creazione di nuovi oggetti riutilizzando sempre gli stessi

Page 14: Flashcamp Milan 2011 - Garbage Collector in the Flash Platform

© 2011 Adobe Systems Incorporated. All Rights Reserved.

Thank you

Page 15: Flashcamp Milan 2011 - Garbage Collector in the Flash Platform

© 2011 Adobe Systems Incorporated. All Rights Reserved.

Page 16: Flashcamp Milan 2011 - Garbage Collector in the Flash Platform

© 2011 Adobe Systems Incorporated. All Rights Reserved.