Details
-
Sub-task
-
Status: Resolved
-
Major
-
Resolution: Won't Fix
-
YARN-2928
-
None
Description
Currently there are multiple collection members of TimelineEntity that are always instantiated, regardless of whether they are used or not: info, configs, metrics, events, isRelatedToEntities, and relatesToEntities.
Since TimelineEntities will be created very often and in lots of cases many of these members will be empty, creating these empty collections is wasteful in terms of garbage collector pressure.
It would be good to start out with null members, and instantiate these collections only if they are actually used. Of course, we need to make that contract very clear and refactor all client code to handle that scenario.