Làm thế nào lớn, theo byte, là một nguyên thủy đóng hộp như java.lang.Integer
hoặc java.lang.Character
trong Java?Chi phí lưu trữ cho nguyên thủy đóng hộp trong Java là bao nhiêu?
An int
là 4 byte, con trỏ thông thường cũng là 4 byte (nếu không được JVM nén). Là chi phí cho một số nguyên (không có bộ nhớ đệm) do đó 4 bytes + 4 bytes = 8 bytes
? Có trường nào ẩn hơn trong đối tượng hộp hoặc chi phí phát sinh thêm liên quan đến các đối tượng không (nghĩa là có chi phí chung cho các đối tượng mà tôi không biết?).
Tôi không quan tâm đến vấn đề bộ nhớ đệm. Tôi biết rằng số nguyên trong một phạm vi nhất định được lưu trữ bởi JVM.
Người ta có thể thuật lại câu hỏi: Yếu tố tối đa sẽ được nhân với số lượng bộ nhớ được sử dụng cho các giá trị được đóng hộp so với giá trị nguyên thủy là gì?
EDIT: Tôi hiểu rằng nhiều triển khai của JVM tồn tại. Chi phí điển hình trong một triển khai HotSpot 32-bit điển hình là gì?
Từ một góc độ nhất định, câu hỏi này không được trả lời vì phí trên một nguyên thủy đóng hộp không được chỉ định trong bất kỳ đặc điểm kỹ thuật nào. Nó có thể và sẽ thay đổi từ VM sang VM và nền tảng đến nền tảng. Nền tảng phần cứng có bộ nhớ được gắn thẻ thậm chí có thể có tổng chi phí bằng không. –
trùng lặp của [Trong Java, cách tốt nhất để xác định kích thước của một đối tượng là gì?] (Http://stackoverflow.com/questions/52353/in-java-what-is-the-best-way-to- xác định kích thước của một đối tượng). – DwB
Tôi nghĩ rằng nó cũng có thể phụ thuộc vào ngữ cảnh bạn đang sử dụng int đóng hộp và bất kỳ tối ưu hóa trình biên dịch thời gian chạy được thực hiện. –