Tôi đang tính toán kích thước [bộ nhớ được sử dụng] của đối tượng java [hashmap]. Nó chứa các phần tử của các kiểu dữ liệu khác nhau [lúc chạy] vì vậy [không-of-elem * size-of-element] không phải là một cách tiếp cận tốt. Mã ngay bây giờ thực hiện theo chuỗiTính kích thước byte của đối tượng Java
if (x)
do something
else if (primitives)
lookup size and calculate
Tuy nhiên quá trình này là một CPU hog và hiệu quả.
Tôi đang nghĩ đến việc sau 2 cách tiếp cận thay vì:
- Serialize đối tượng để một bộ đệm và có được kích thước.
- Nhìn vào java.lang.instrument để có được kích thước
Tôi đang tìm kiếm kinh nghiệm anyones với những cách tiếp cận cho hiệu suất, hiệu quả, mở rộng quy mô vv HOẶC nếu bạn biết cách nào tốt hơn.
P.S: Đây là tiện ích nền mà tôi đang xây dựng nên kích thước không cần siêu chính xác mặc dù nó phải chính xác. Vì vậy, tôi sẵn sàng giao dịch chính xác cho hiệu suất
Tôi không quan tâm đến các vùng sâu, kích thước [kích thước của các đối tượng được refered bởi đối tượng này sẽ không được tính.]
Tôi đang tìm kiếm một so sánh hiệu suất và tìm hiểu cách getObjectSize() hoạt động trong nội bộ ..so mà tôi không messup cái gì khác để cải thiện hiệu suất
Cảm ơn
Chính xác * ý của bạn là gì theo kích thước? Số lượng bộ nhớ được sử dụng? Số lượng phần tử chứa? –
theo kích thước, ý tôi là số lượng bộ nhớ đã thực hiện .. chỉnh sửa để phản ánh rằng – codeObserver
Câu hỏi nhiều hơn hoặc ít giống hệt nhau hơn: http://stackoverflow.com/questions/757300/programatically-calculate-memory-occupied-by-a-java- object-including-objects-it-r – andersoj