6

sự hiểu biết của tôi là các kiểu nguyên thủy (uint, chuỗi, Số, v.v.) của một lớp không cần phải được đặt thành rỗng để thu thập rác.ActionScript - Sự khác biệt giữa các đối tượng nguyên thủy/không nguyên thủy để quản lý bộ nhớ?

ví dụ, tôi không cần phải viết dispose() phương pháp này trong các lớp sau đây:

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

nếu điều này là đúng, mà tôi tin rằng nó là, sự khác biệt giữa các đối tượng của các kiểu dữ liệu và các đối tượng là những gì các loại nguyên thủy liên quan đến cấp phát bộ nhớ?

Trả lời

6

Theo như tôi biết, giải thích đầy đủ và chi tiết nhất về logic GC trong máy nghe nhạc flash VM nằm ở in the blog of Alex Harui, written back in 2007. Liên kết trực tiếp: GCAtomic.ppt.

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

Giao dịch logic GC với tham chiếu và tính tham chiếu. Và kể từ khi bạn không thể có được một tham chiếu đến một nguyên thủy trong ActionScript, bạn không thể làm gì về GC trong khía cạnh này.

CHỈNH SỬA Chỉ cần nhớ một số khác nice set of articles on GC and resource management bởi Grant Skinner.

+0

Liên kết tới GCAtomic.ppt đã bị hỏng nhưng có vẻ như ai đó đã cung cấp nó qua Slideshare: http://www.slideshare.net/bufanliu/gc-atomic –

1

GC loại bỏ các đối tượng không được tham chiếu mạnh bởi bất kỳ đối tượng nào. Các trường được nhập nguyên thủy không được tham chiếu ở tất cả - các giá trị của chúng được lưu trữ trực tiếp trong bộ nhớ của đối tượng chứa (ít nhất là tôi nghĩ vậy).

Tôi hy vọng điều đó sẽ hữu ích.