Về lý thuyết, CÓ, có thể. Nhưng nó thực hành, nó không bao giờ nên.
Trong hầu hết các máy ảo Java, các luồng ứng dụng không phải là chủ đề duy nhất đang chạy. Ngoài các chủ đề ứng dụng, có các chủ đề biên dịch, các trình hoàn thiện, các chủ đề thu gom rác và một số chủ đề khác. Các quyết định lập kế hoạch phân bổ lõi CPU cho các luồng này và các luồng khác từ các chương trình khác đang chạy trên máy dựa trên nhiều tham số (ưu tiên luồng, thời gian thực hiện cuối cùng, v.v.). Vì vậy, trong thực tế không có thread trong hệ thống nên chờ đợi cho CPU phân bổ cho một thời gian dài bất hợp lý và hệ điều hành không nên chặn bất kỳ thread trong một khoảng thời gian không giới hạn.
Có hoạt động tối thiểu mà các chủ đề thu gom rác (và các chủ đề VM khác) cần thực hiện. Họ cần kiểm tra định kỳ để xem có cần thu gom rác hay không. Ngay cả khi các luồng ứng dụng đều bị treo, có thể có các luồng máy ảo khác, chẳng hạn như chuỗi trình biên dịch JIT hoặc chuỗi kết thúc, mà làm việc và, do đó, phân bổ các đối tượng và kích hoạt thu gom rác.Điều này đặc biệt đúng đối với JVM meta-tròn thực hiện các luồng VM trong Java và không phải trong C/C++;
Hơn nữa, JVM hiện đại nhất sử dụng bộ gom rác thế hệ (Bộ thu gom rác phân vùng heap thành các không gian riêng biệt và đặt đối tượng với các độ tuổi khác nhau trong các phần khác nhau của heap) Điều này có nghĩa là các đối tượng ngày càng già hơn được chuyển đến các không gian cũ khác. Do đó, ngay cả khi không cần thu thập đồ vật, một bộ thu gom rác thế hệ có thể di chuyển các vật thể từ không gian này sang không gian khác.
Tất nhiên, chi tiết của từng bộ thu gom rác khác nhau từ JVM đến JVM. Để đưa thêm muối vào vết thương, một số JVM hỗ trợ nhiều loại thu gom rác. Nhưng nhìn thấy một hoạt động thu gom rác thải tối thiểu trong một ứng dụng nhàn rỗi là không có gì ngạc nhiên.
Nguồn
2013-04-19 15:59:28
_ "hệ thống chậm thu thập dữ liệu và gần như đóng băng" _ có rò rỉ bộ nhớ không? – phil
Vâng, tôi biết nó nghe có vẻ như vậy, nhưng chúng tôi thấy số lượng bộ nhớ có sẵn co lại theo thời gian mà chúng tôi không có. Chắc chắn là một suy nghĩ tốt mặc dù. –
Tôi đã nhìn thấy một cái gì đó như bạn mô tả trước đây bởi vì đối tượng tuyên bố đã không bao giờ đóng cửa, và sau một thời gian, đầy đống. Sử dụng VisualVM hoặc bất kỳ công cụ nào bạn muốn kiểm tra những gì sử dụng hầu hết bộ nhớ và xem nó có tiếp tục phát triển hay không. – phil