Phiên bản Java nào chúng ta đang nói đến ở đây? Trong 6, tôi sẽ không bao giờ gọi nó một cách rõ ràng. Như một quy tắc chung của ngón tay cái thu gom rác là đủ tốt để biết khi nào tốt nhất để làm sạch tài nguyên và nó có đủ tùy chọn VM cấu hình. Tôi đã chắc chắn không bao giờ cảm thấy cần phải gọi nó trong mã, và tôi muốn nói, trừ khi bạn đã làm một cái gì đó thực sự kỳ lạ (hoặc hiển thị sử dụng tài nguyên) tốt nhất là không. Nếu bạn cảm thấy cần phải gọi nó thì tôi nói bạn đã làm điều gì đó xấu hoặc sai ở đâu đó.
Nếu chúng ta đang nói về làm việc với Java 1.4 hoặc trước đó, đôi khi tôi thấy nó cần một bàn tay giúp đỡ. Không có ví dụ để tay (xin lỗi) nhưng tôi nhớ cần phải ném nó một gợi ý để tránh tụt hậu khủng khiếp khi nó quyết định cuối cùng đá vào. Với mã tương tự trên 6, vấn đề đã biến mất và gọi nó làm ít hoặc không có sự khác biệt.
Tất nhiên, khi bạn đang gọi System.gc()
tất cả những gì bạn đang thực hiện đang đề xuất với máy ảo, đây có thể là thời điểm tốt để chạy bộ thu gom rác. Nó không có nghĩa là nó thực sự sẽ, nó chỉ đơn thuần là một gợi ý rằng việc thực thi VM hoàn toàn hợp lệ hoàn toàn có thể bỏ qua. Trong thực tế thậm chí có một tùy chọn DisableExplicitGC có nghĩa là các cuộc gọi chắc chắn sẽ không có ảnh hưởng (và nhiều mã trong môi trường sản xuất được chạy với tùy chọn này.)
Vì vậy, nó vẫn được sử dụng trong mã - nhưng phần lớn thời gian nó không phải là thực hành tốt cả.
Có. Đó là những gì HFJ gợi ý. Nhưng không thực sự thuyết phục về câu trả lời của họ. –