This article represents a list of web pages which can help one understand the memory usage of Java objects and arrays along with examples. Please feel free to comment/suggest any other cool pages. Also, sorry for the typos.
The in-memory size of the object depends on the architecture, mainly on whether the VM is 32 or 64-bit. The actual VM implementation also matters.
- How to calculate memory usage of a Java object?: Very simplified explanation of how one could calculate a memory of any Java object. For example, lets say, you want to calculate the memory of a Java object which holds two int variables, one boolean variable, one Long object, and a reference to other object. The memory would turn out to be following:
- 8 bytes for the object header
- 2 x 4 = 8 bytes for two int variables
- 1 byte for a boolean variable
- 8 bytes (object reference) + 8 bytes for long data type = 16 bytes for long object
- 4 bytes for reference to some other object
The total size of the above mentioned object will be 8 + 8 + 1 + 16 + 4 = 37 bytes + 3 bytes (for padding) = 40 bytes.
- How to calculate memory usage of a Java array?: The page presents examples on how to calculate size of a Java array object. For example, lets say a Java array consisting of 20 Integer objects. Following is the detail on the size:
- 12 bytes for array header object (8 bytes for header and 4 bytes for storing length of the array)
- 20 x 16 bytes = 320 bytes for integer objects.
The total size of the said Java array object = 12 + 320 bytes = 332 bytes + 4 bytes (padding) = 336 bytes.
- Memory usage of both Java Objects and Array: This article presents more examples on memory usage of obejcts types such as String.
Latest posts by Ajitesh Kumar (see all)
- Agentic Reasoning Design Patterns in AI: Examples - October 18, 2024
- LLMs for Adaptive Learning & Personalized Education - October 8, 2024
- Sparse Mixture of Experts (MoE) Models: Examples - October 6, 2024
There is also the sizeof engine library that do the calculation for you:
https://github.com/ehcache/sizeof