We have a class with many instances and run into memory problems. Therefore, we try to reduce the memory requirements of this class. One idea would be the following.
The class has many boolean instance variables, each of which would take up one word in a naïve implementation. One could think of combining them to a mini bit vector stored in an int, such that their combined memory requirement would be one word.
But I would suspect that the Java VM is doing this optimization anyways, such that performing it by hand would not get any additional savings. Right?
A boolean uses 1 byte of memory (on hotspot). You could use alternatives:
long[]
in the BitSet and the unused space in the long[]
, i.e. around 20 bytesThe JVM is unlikely to do that optimisation for you (hotspot 8 doesn't).