cuốn sách gpt4 ai đã làm

Đồng thời Java: Việc hủy bỏ Hợp đồng tương lai có cần thiết để chúng được thu gom rác không?

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-02 07:48:24 25 4
mua khóa gpt4 Nike

Tôi đang viết một số mã mà tôi có thể cần tạo số lượng đối tượng không giới hạn trong tương lai (java.util.concurrent.Future).

Nhưng tôi lo lắng về việc hết bộ nhớ vào một lúc nào đó.

Có một vài câu hỏi ở đây:

  1. Jvm có biết rằng khi tương lai được hoàn thành, nó sẽ không được tham chiếu ở bất kỳ đâu và do đó đủ điều kiện cho GC (mặc dù luồng tạo ra nó vẫn tồn tại và đang chạy) không?
  2. Lý tưởng nhất là tôi không muốn tự mình theo dõi những tương lai này. Nhưng nếu tôi giữ các tài liệu tham khảo về các hợp đồng tương lai này và gọi lệnh hủy theo định kỳ, liệu chúng có sẵn cho GC không?

câu trả lời hay nhất

Cuối cùng bạn sẽ cần phải loại bỏ tất cả các cặp Tương lai tài liệu tham khảo để chúng được thu thập rác. Thực tế phổ biến là duy trì một Tương lai thu thập và kiểm tra thường xuyên isDone() Có nên quay lại không ĐÚNG VẬY. Nếu vậy, nhiệm vụ đã hoàn thành và tham chiếu đến nó có thể bị xóa. Nếu bạn lo lắng về việc chồng chất một số nhiệm vụ kéo dài có thể bị gián đoạn một cách an toàn, bạn cần phải Tương lai kêu gọi Hủy bỏ() và xóa/làm trống mọi tham chiếu đến nó có thể tồn tại.

Nói chung, việc xây dựng một hệ thống có thể đạt được mức tăng trưởng vô hạn luôn là một ý tưởng tồi. nếu chưa hoàn thành Tương lai Số lượng đối tượng tăng quá lớn và bạn nên áp dụng áp suất ngược ở những nơi khác trong hệ thống.

“Một khi tương lai đã hoàn thành, nó sẽ không được nhắc đến ở bất cứ đâu” không hẳn là đúng. Ví dụ: khách hàng tham chiếu nó luôn có thể vượt qua lấy() Kết quả yêu cầu phương thức Vì vậy, JVM cần phải giữ Tương lai Có hiệu lực cho đến khi tất cả các tài liệu tham khảo bên ngoài như vậy được loại bỏ. khi Tương lai Khi nó "kết thúc" (có nghĩa là nó hoàn thành nhiệm vụ hoặc bị hủy), tham chiếu trong nhóm luồng sẽ bị xóa.

Về tính tương tranh của Java: Việc hủy bỏ Hợp đồng tương lai có cần thiết để chúng được Thu gom rác không?, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/20135304/

25 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress