How much memory Java allocates for declaring fields like private char letter; and private int size; at the moment of constucting the object containing these fields?
How much memory Java allocates for declaring fields like private char letter; and private
Share
This depends on the implementation of the virtual machine. The spec specifies that a char primitive type has a value range of 16 Bit, but it does not specify how a virtual machine has to store an object on the heap.
There’s no need for such a detailed spec, because VM’s don’t have to be able to exchange or serialize raw objects from the heap.
To respond to your clarification in a comment: Again, it depends on the implementation, but there a couple of good reasons to allocate the memory for all class attributes once at the time the object is “created”. If we decided for lazy allocation, then we’d have to add mechanics to dynamically resize objects on the heap at runtime which is pretty expensive.
If we reserve all space right away at the beginning, then we never have to resize or relocate data on the heap, because the datastructures can never grow or shrink in size.