Làm thế nào để bạn tối ưu hóa việc sử dụng kích thước heap của một ứng dụng có rất nhiều (triệu) đối tượng tồn tại lâu dài? (Bộ nhớ cache lớn, tải rất nhiều hồ sơ từ một db)Làm thế nào để bạn làm cho bộ nhớ ứng dụng Java của bạn hiệu quả?
- Sử dụng kiểu dữ liệu đúng
- Tránh java.lang.String để đại diện cho các kiểu dữ liệu khác
- Tránh lặp lại đối tượng
- Sử dụng enums nếu các giá trị được biết trước
- Sử dụng các nhóm đối tượng
- String.intern() (tốt ý tưởng?)
- Load/giữ chỉ các đối tượng bạn cần
Tôi đang tìm kiếm lập trình nói chung hoặc câu trả lời cụ thể Java. Không chuyển đổi trình biên dịch sôi nổi.
Chỉnh sửa:
Tối ưu hóa biểu diễn bộ nhớ của POJO có thể xuất hiện hàng triệu lần trong heap.
Sử dụng trường hợp
- tải một tập tin csv khổng lồ trong bộ nhớ (chuyển đổi thành các POJO)
- Sử dụng chế độ ngủ đông để lấy triệu hồ sơ từ một cơ sở dữ liệu
Tiếp tục câu trả lời:
- Sử dụng mẫu cân bằng
- Sao chép vào ghi
- Thay vì tải 10M đối tượng có 3 thuộc tính, có hiệu quả hơn khi có 3 mảng (hoặc cấu trúc dữ liệu khác) có kích thước 10M không? (Có thể là một nỗi đau để thao tác dữ liệu nhưng nếu bạn thực sự thiếu bộ nhớ ...)
bằng cách viết chương trình của bạn trong lắp ráp ... :) –
tôi nghi ngờ rằng lắp ráp sẽ giúp - thời gian phát triển sẽ còn đáng kể và sẽ không có nền tảng chéo. ;) – Fortyrunner
@Fortyrunner Tôi nghi ngờ Desmond đang nói đùa. –