Tôi đang thực hiện một số ứng dụng từ nhà phát triển trước đó. Khi tôi chạy các ứng dụng thông qua Eclipse, tôi thấy việc sử dụng bộ nhớ và kích thước heap tăng lên rất nhiều. Sau khi điều tra thêm, tôi thấy rằng họ đang tạo ra một vật thể liên tục trong một vòng lặp cũng như những thứ khác.Một số phương pháp hay nhất về quản lý bộ nhớ Java là gì?
Tôi bắt đầu trải qua và làm một số việc dọn dẹp. Nhưng tôi càng trải qua nhiều câu hỏi, tôi càng thích "điều này có thực sự làm gì không?"
Ví dụ: thay vì khai báo biến ngoài vòng lặp được đề cập ở trên và chỉ đặt giá trị của nó trong vòng lặp ... chúng tạo đối tượng trong vòng lặp. Những gì tôi có nghĩa là:
for(int i=0; i < arrayOfStuff.size(); i++) {
String something = (String) arrayOfStuff.get(i);
...
}
so
String something = null;
for(int i=0; i < arrayOfStuff.size(); i++) {
something = (String) arrayOfStuff.get(i);
}
Am tôi không chính xác khi nói rằng vòng lặp chốt là tốt hơn? Có lẽ tôi đã sai.
Ngoài ra, còn sau vòng lặp thứ hai ở trên, tôi đặt "cái gì đó" trở lại thành vô giá trị? Điều đó sẽ xóa một số bộ nhớ?
Trong cả hai trường hợp, một số phương pháp hay nhất về quản lý bộ nhớ tốt mà tôi có thể thực hiện theo đó sẽ giúp giữ mức sử dụng bộ nhớ của tôi thấp trong các ứng dụng của tôi là gì?
Cập nhật:
tôi đánh giá cao phản hồi của mọi người cho đến nay. Tuy nhiên, tôi đã không thực sự hỏi về các vòng trên (mặc dù theo lời khuyên của bạn tôi đã quay trở lại vòng đầu tiên). Tôi đang cố gắng thực hiện một số phương pháp hay nhất mà tôi có thể theo dõi. Một cái gì đó trên dòng của "khi bạn đang thực hiện bằng cách sử dụng một bộ sưu tập, xóa nó ra". Tôi chỉ thực sự cần phải chắc chắn rằng không có nhiều bộ nhớ đang được đưa lên bởi các ứng dụng này.
Chỉnh sửa của bạn: Như ba người đã nói cho đến nay, hãy lập hồ sơ! –
Tôi đang tìm một số thực hành cụ thể để sử dụng vì vậy tôi không cần phải có ai đó cấu hình nó. Tôi thà phát triển nó đúng cách ngay từ đầu hơn là viết mã, hy vọng nó hoạt động, lập hồ sơ và sửa lỗi. – Ascalonian
Các "thực hành cụ thể" là viết mã có cấu trúc tốt mà không thực hiện tối ưu hóa sớm, và sau đó lược tả nó để tìm ra những gì cần tối ưu hóa. –