In the singleton life cycle, each time a consumer asks for a new instance, the same instance is provided. This is the most efficient life cycle because there is only a single instance, so the amount of consumed memory is minimal. However, it is recommended that you only use the singleton life cycle for thread-safe components.