6

Según entiendo, los tipos primitivos (uint, cadena, Número, etc.) de una clase no necesitan establecerse como nulos para la recolección de elementos no utilizados.ActionScript - ¿Diferencia entre objetos primitivos/no primitivos para la gestión de memoria?

por ejemplo, no estoy obligado a escribir este método dispose() en la siguiente clase:

package 
{ 
//Imports 
import flash.display.Shape; 

//Class 
public class DrawSquare extends Shape 
    { 
    //Properties 
    private var squareColorProperty:uint; 

    //Constructor 
    public function DrawSquare(squareColor:uint) 
     { 
     squareColorProperty = squareColor; 

     init(); 
     } 

    //Initialize 
    private function init():void 
     { 
     graphics.beginFill(shapeColorProperty); 
     graphics.drawRect(0, 0, 200, 200); 
     graphics.endFill(); 
     } 

    //Dispose 
    public function dispose():void 
     { 
     squareColorProperty = null; 
     } 

    //Get Shape Color 
    public function get squareColor():uint; 
     { 
     return squareColorProperty; 
     } 
    } 
} 

si esto es cierto, que creo que es, ¿cuál es la diferencia entre objetos de tipos y objetos primitivos de tipos no primitivos con respecto a la asignación de memoria?

Respuesta

6

Hasta donde yo sé, la explicación más completa y detallada de las lógicas de GC en la máquina virtual flash player se encuentra en in the blog of Alex Harui, written back in 2007. Enlace directo: GCAtomic.ppt.

And here are some useful hints on GC from Grant Skinner.

ofertas lógicas GC con referencias y recuento de referencias. Y dado que no puede obtener una referencia a una primitiva en ActionScript, no puede hacer nada sobre GC en este aspecto.

EDIT Acabo de recordar otro nice set of articles on GC and resource management por Grant Skinner.

+0

El enlace a GCAtomic.ppt ya está roto, pero parece que alguien lo hizo disponible a través de Slideshare: http://www.slideshare.net/bufanliu/gc-atomic –

1

El GC elimina objetos a los que ningún objeto hace referencia fuerte. Los campos de tipo primitivo no se referencian en absoluto; sus valores se almacenan directamente en la memoria del objeto contenedor (al menos eso creo).

Espero que ayude.

Cuestiones relacionadas