Consider the class below, and notice the comment telling how much bytes they use.
There is a overhead of 16bytes for maintaining class, 1 Byte for byte and boolean, 2Byte for char and short, 4 bytes for integer, 8 bytes for long and double, and some overhead for padding, to make overall memory even, to sum up:
Java type
Bytes required
boolean
1
byte
char
2
short
int
4
float
long
8
public class MysteryBox { // 16 (object overhead)
private int x0; // 4 (1 int)
private long y0, y1, y2; // 24 (3 long)
private double z0, z1, z2; // 24 (3 double)
private boolean\[\] a = new boolean\[80\]; // 8 (reference to array)
// 104 (boolean array of size 80)
... 4 (padding)
} ----
//total size - 184
Here are some good links on java memory objects:
- http://www.javapractices.com/topic/TopicAction.do?Id=83
- http://www.yourkit.com/docs/kb/sizes.jsp
- http://www.javamex.com/tutorials/memory/object_memory_usage.shtml