Đối với những gì nó có giá trị, tôi đã xem mã nguồn VM Dalvik và không thể tìm thấy bất kỳ API ổn định nào để có được kích thước của một đối tượng. Nếu bạn muốn tự xem, kích thước của vật thể được lưu trữ trong ClassObject::objectSize : size_t
, xem dalvik/vm/oo/Object.h.
Có, tuy nhiên, nội bộ API để nhận kích thước của một đối tượng. Nó được DDMS sử dụng để báo cáo thông tin chi tiết về kích thước đối tượng. Tuy nhiên, vì API là nội bộ nên có khả năng thay đổi giữa các phiên bản Android khác nhau. Thêm vào đó, API sẽ gửi dữ liệu byte[]
thô xung quanh và là máy khách/máy chủ dựa và không phải là cuộc gọi thư viện đơn giản, vì vậy nó sẽ vô cùng khó xử khi sử dụng. Nếu bạn muốn xem, hãy bắt đầu bằng số dvmAllocObject()
trong số dalvik/vm/alloc/Alloc.cpp và cuộc gọi dvmTrackAllocation()
.
Tóm lại: có thể không có bất kỳ API có thể sử dụng, ổn định nào để có được kích thước của một đối tượng trong máy ảo Dalvik.
Nguồn
2012-02-27 10:11:55
Kiểm tra điều này: http://www.javapractices.com/topic/TopicAction.do?Id=83 – slayton
Trông và cảm thấy giống như một vụ hack ngu ngốc ... Tôi đã đi với câu trả lời của Samuel. –
Chỉ cần tò mò ... trường hợp sử dụng thực tế của bạn là gì? –