Trong hầu hết tất cả các dự án Java lớn hơn mà tôi đã tham gia, tôi nhận thấy rằng chất lượng dịch vụ của ứng dụng sẽ giảm đi theo thời gian hoạt động của vùng chứa. Điều này có lẽ là do rò rỉ bộ nhớ trong mã.Thực hành tốt nhất để xử lý rò rỉ bộ nhớ trong các dự án Java lớn?
Cách chính xác để giải quyết vấn đề này rõ ràng là truy nguyên ngược lại nguyên nhân gốc rễ của sự cố và khắc phục sự cố rò rỉ trong mã. Cách nhanh chóng và dơ bẩn để giải quyết vấn đề đơn giản là khởi động lại Tomcat (hoặc bất cứ thùng chứa servlet nào bạn đang sử dụng).
Đây là ba câu hỏi của tôi:
Giả sử rằng bạn chọn để giải quyết vấn đề bằng cách truy tìm nguyên nhân gốc rễ của vấn đề (các rò rỉ bộ nhớ), làm thế nào bạn sẽ thu thập dữ liệu để phóng to trên các vấn đề ?
Giả sử bạn chọn cách tăng tốc nhanh chóng và bẩn thỉu bằng cách khởi động lại vùng chứa, cách bạn thu thập dữ liệu để chọn chu kỳ khởi động lại tối ưu?
Bạn đã có thể triển khai và chạy các dự án trong một khoảng thời gian dài mà không cần phải khởi động lại thùng chứa servlet để lấy lại sự mất ổn định? Hoặc là một servlet thường xuyên khởi động lại một cái gì đó mà người ta phải đơn giản chấp nhận?
+1 cho câu trả lời đơn giản, vô nghĩa. Việc khởi động lại vùng chứa là một công việc đơn giản, nhưng không phải là giải pháp lâu dài. Tự động hóa việc khởi động lại vùng chứa là một công việc tự động, có một số lợi ích của một giải pháp, nhưng cũng có rất nhiều nhược điểm. –