tôi đang tạo ra một người dẫn chương trình mới như vậy:GWT Garbage Collection
new MyPresenter(new MyView());
Nó đăng ký một số xử lý sự kiện và liên kết với các quan điểm và như vậy. Cuối cùng, tôi có thể "đóng" chế độ xem đó để nó không còn được hiển thị bởi trình duyệt nữa. Tôi không duy trì một tham chiếu đến trường hợp này là MyPresenter
ở bất kỳ đâu.
Trong các diễn đàn của Google về chủ đề này, phản hồi thông thường là "đặt tham chiếu của bạn thành null" và sau đó đừng lo lắng về điều đó. Không giống như trong Javascript, tôi không thể chỉ nói this = null;
trong Java vì những lý do hiển nhiên. Nhưng trong Javascript, rất dễ để vô hiệu hóa các tham chiếu đối tượng mà tôi biết sẽ không còn được sử dụng nữa.
Câu hỏi của tôi: Làm cách nào để biết liệu người trình bày này có bị thu gom rác vì tôi không duy trì tham chiếu đến nó không? Nó rất rõ ràng tồn tại. Tôi có nên tin rằng GWT và JS sẽ chăm sóc điều này? Hoặc tôi có cần duy trì tham chiếu của riêng mình cho MyPresenter
để tôi có thể tự null
khi tôi hoàn thành nó không?
Tùy thuộc vào trình duyệt. Về cơ bản, nếu bạn không có tham chiếu đến các đối tượng, nó sẽ được thu thập, nhưng có lỗi, như lỗi nổi tiếng trong IE với các tham chiếu chéo giữa các đối tượng DOM và JS (các thành phần mặc định trong GWT thường được bảo vệ khỏi điều này) hoặc một số bộ thu gom rác không thể xóa các đảo đối tượng. Vì có rất nhiều trình duyệt, không có mẹo hay công cụ phổ quát nào để chống lại vấn đề này. Lựa chọn duy nhất là chạy thử nghiệm hiệu suất và kiểm tra mức sử dụng bộ nhớ. – jusio
Tôi không bao giờ ** có tham chiếu đến đối tượng đó từ bên trong mã (người dùng) của tôi, tuy nhiên nó có thể tồn tại vì nó có thể xử lý các sự kiện nếu tôi kích hoạt chúng. Tuy nhiên, nếu tôi loại bỏ các trình xử lý sự kiện và null ra 'MyView' là đủ để làm cho nó được GC'd? Nỗi sợ của tôi là nó không phải. –
@TravisWebb nó * phải * đủ. Nhưng tai nạn xảy ra. Tôi không thể phù hợp trong một ý kiến tất cả các lỗi liên quan đến GC, nhưng chúng xảy ra từ thời gian. Nếu bạn loại bỏ tất cả các tham chiếu đến đối tượng, nó sẽ được thu thập (thêm một cái gì đó làm trình nghe sự kiện, được tính là tạo tham chiếu, vì một số đối tượng ở đâu đó phải biết nơi gửi sự kiện) – jusio