Just một đống não của tất cả những điều tôi đã phải ghi nhớ khi viết loại ứng dụng này.
Tránh rò rỉ bộ nhớ
Tôi đã có một ứng dụng có thể chạy một lần vào giữa ngày, mỗi ngày, và trong đó tôi đã có một FileWriter
. Tôi đã không đóng cửa đúng cách, và sau đó chúng tôi bắt đầu tự hỏi tại sao máy ảo của chúng tôi sẽ biến mất sau một vài tuần. Rò rỉ bộ nhớ có thể đến dưới dạng tiếng ồn thực sự, với một trong những ví dụ phổ biến nhất là bạn không de-reference
một đối tượng phù hợp. Ví dụ: sử dụng trường của lớp làm phương thức lưu trữ tạm thời. Thường thì lớp học vẫn tồn tại, và do đó, các tham chiếu. Điều này khiến bạn bị đối tượng, ngồi trong ký ức và không làm gì cả.
Sử dụng đúng loại Scheduler
tôi đã sử dụng một java Timer
trong ứng dụng đó, và sau đó tôi biết được rằng nó tốt hơn để sử dụng một ScheduledThreadPoolExecutor khi ứng dụng khác đã được thay đổi đồng hồ hệ thống. Vì vậy, nếu bạn có kế hoạch giữ nó hoàn toàn dựa trên Java, tôi khuyên bạn nên sử dụng nó trên một bộ đếm thời gian cho tất cả các lý do chi tiết trong this question.
Quan tâm đến việc sử dụng bộ nhớ và môi trường của bạn
Nếu ứng dụng của bạn đang tải một lượng lớn dữ liệu mỗi ngày, và bạn có các ứng dụng khác chạy trên cùng một máy chủ, bạn có thể muốn cẩn thận về thời gian. Ví dụ, nói vào giữa ngày, ba trong số các ứng dụng chạy hoạt động theo lịch trình của họ, tôi sẽ nói chạy nó tại bất kỳ lúc nào khác có lẽ sẽ là một động thái thông minh. Hãy chú ý đến môi trường mà bạn đang thực hiện mã của bạn trong.
xử lý
Có thể bạn muốn cấu hình ứng dụng của bạn để cho bạn biết nếu có điều gì đã đi sai, mà không cần ứng dụng phá vỡ Lỗi.Nếu nó chạy vào một thời điểm nhất định vài giờ một lần, điều đó có nghĩa là mọi người có thể phụ thuộc vào nó, vì vậy tôi sẽ có một hàm trong mã Java của bạn gửi email cho bạn, nêu chi tiết bản chất của ngoại lệ.
Làm cho nó cấu hình
lần nữa, nếu nó cần phải chạy ở các điểm khác nhau trong ngày, bạn không muốn phải kéo điều xuống trong một vài giờ để làm việc ra một số thay đổi nhỏ để ma cua ban. Thay vào đó, hãy chuyển nó thành tệp thuộc tính java, hoặc vào một Cấu hình XML (hoặc thực sự, bất cứ điều gì). Ưu điểm của việc này là bạn có thể cập nhật chương trình của mình và bắt đầu và chạy nó trước khi bất kỳ ai thực sự nhận thấy sự khác biệt.
Hãy sợ static
từ khóa
Đó bad boy sẽ làm cho đối tượng tồn tại, ngay cả khi bạn phá hủy tài liệu tham khảo mẹ. Nó là mẹ của tất cả các rò rỉ bộ nhớ nếu bạn không cẩn thận với nó. Nó tốt cho hằng số, và những thứ bạn biết không cần thay đổi và cần tồn tại trong dự án để chạy tốt, nhưng nếu bạn sử dụng nó cho các giá trị ngẫu nhiên bên trong một dự án, bạn sẽ nhanh chóng tự hỏi tại sao ứng dụng bị lỗi vài giờ một lần thay vì syncing
.
Đạo cụ cho @ X86 để nhắc tôi về điều đó.
Google từ khóa: 'java daemon process'. – maksimov
Bạn cần cân nhắc xem chương trình có cần cập nhật chính nó khi đang chạy hay không. – EJP