Tôi sẽ chỉ theo dõi câu trả lời của @ Juan - GC cần được xem xét từ đầu như là một khía cạnh quan trọng của thiết kế ứng dụng. Nếu bạn tạo một đối tượng, bạn phải biết mỗi tham chiếu đến nó, và loại bỏ từng tham chiếu và vô hiệu hóa nó để gắn cờ đúng cách @. Nếu bạn tham chiếu đối tượng đó trong mảng, đếm, nếu bạn tham chiếu nó trong một trình nghe, đếm, nếu bạn tham chiếu nó qua một biến cục bộ, nó cũng đếm (mặc dù chỉ trong suốt thời gian của hàm), danh sách hiển thị, điều đó chắc chắn đếm, và bật và bật.
Tôi đi xa đến mức viết câu lệnh nghe người nghe của tôi trước khi thêm chúng chỉ để đảm bảo. Tôi sẽ hầu như luôn luôn viết một phương thức hủy diệt() cho bất kỳ đối tượng nào để xử lý các hệ thống phân cấp đối tượng bên trong (các cuộc gọi cha mẹ phá hủy trên con, mà lần lượt các cuộc gọi phá hủy trên bất kỳ trẻ em nào, v.v ...). Chỉ cần loại bỏ/nulling một phụ huynh mà không làm như vậy cho mỗi đứa trẻ là quản lý GC nghèo.
Và nếu bạn thực sự có bất kỳ mối lo ngại nào về rò rỉ mem đã phát sinh, hãy theo dõi Hệ thống.totalMemory chỉ để đảm bảo:
var mem:String = Number(System.totalMemory/1024/1024).toFixed(2) + ‘Mb’;
trace(mem); // eg traces “24.94Mb”
Chủ yếu - chỉ là phương pháp về nó - khoa học không tên lửa của nó, nhưng bạn phải cẩn thận.
Cheers -
@ và thậm chí nếu bạn làm thế, đèn flash chiếm tâm trí riêng của mình về việc khi nào thực sự làm một quá trình quét. Điều tốt nhất chúng ta có thể làm là đảm bảo một đối tượng được gắn cờ đúng cách và tin tưởng rằng đối tượng đó sẽ được xử lý hiệu quả.
Đây có phải là câu hỏi về bài tập về nhà hay không? – davr
Không, nhưng tôi đã đặt nó giống như một haha ... Ý tưởng là có một ví dụ 'goto' tốt khi nghĩ về rò rỉ bộ nhớ nói chung. Một 'anti-pattern' tốt để nói. – Skawful