ActionScript - разница между примитивными / не примитивными объектами для управления памятью? - PullRequest
6 голосов
/ 04 июля 2011

Насколько я понимаю, примитивные типы ( uint, string, Number и т. Д. ) класса не должны быть установлены в null для сборки мусора.

например, яя не обязан писать этот dispose() метод в следующем классе:

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;
        }
    }
}

, если это правда, и я верю, что в чем разница между объектами примитивных типов и объектами не примитивных типовпо поводу выделения памяти?

Ответы [ 2 ]

6 голосов
/ 04 июля 2011

Насколько я знаю, наиболее полное и подробное объяснение логики GC во флеш-плеере VM находится в блоге Алекса Харуи, написанном еще в 2007 году . Прямая ссылка: GCAtomic.ppt .

А вот несколько полезных советов по GC от Гранта Скиннера.

Логика GC имеет дело с ссылками и подсчетом ссылок. И поскольку вы не можете получить ссылку на примитив в ActionScript, вы ничего не можете сделать с GC в этом аспекте.

РЕДАКТИРОВАТЬ Только что вспомнил еще один замечательный набор статей по ГХ и управлению ресурсами от Гранта Скиннера.

1 голос
/ 04 июля 2011

ГХ удаляет объекты, на которые нет сильных ссылок ни одного объекта. На поля примитивного типа вообще не ссылаются - их значения напрямую сохраняются в памяти содержащего объекта (по крайней мере, мне так кажется).

Надеюсь, это поможет.

...