Chapter 7. The Flyweight Pattern
Object-oriented systems can face performance issues due to the overhead of object creation. Performance issues usually appear in embedded systems with limited resources, such as smartphones and tablets. The same problem can appear in large and complex systems are where we need to create a very large number of objects (and possibly users) that need to coexist at the same time.
This happens because whenever we create a new object, extra memory needs to be allocated. Although virtual memory provides us, theoretically, with unlimited memory, the reality is different. If all the physical memory of a system gets exhausted, it will start swapping pages to the secondary storage, usually a Hard Disk Drive (HDD), which, in most cases, is unacceptable due to the performance differences between the main memory and HDD. Solid State Drives (SSD) generally have better performance than HDD, but not everybody is expected to use SSD. So, SSD are not going to totally...