Use Flyweight as a measured Java memory optimization, not as a theoretical pattern applied before allocation pressure is understood.
Flyweight is a memory optimization pattern, so it should be justified by memory pressure, not only by design purity.
Flyweight can help when many objects repeatedly store:
The pattern is useful when it solves a memory problem you can actually see.