Description
UILeaf is a facelets internal class that acts as a wrapper for html markup. Since this is a stateless transient class, used intensively by JSF it is better to reduce the size and overhead caused by this class.
1. Make this class extends from UIComponent instead UIComponentBase to reduce the overall size of the object in memory.
2. Do not use an extra object for implement its attribute map.
3. Use a variable for ComponentSupport.MARK_CREATED instead store it into a HashMap.
With these optimizations we can reduce object size to less than a half and replace a lot of calls to HashMap.get() by simple variable assignments.