Jira https://issues.apache.org/jira/browse/CURATOR-374 reduced per-node memory usage in TreeCache. It can be improved further via removal of the nodeState field - its LIVE state corresponds exactly to the adjacent childData field being non-null, and a sentinel ChildData value can be used for the DEAD state. This simplification also reduces the room for bugs and state inconsistencies.
Other improvements included:
- A further simplification to have TreeNode extend AtomicReference, which obviates the need for an explicit childData field
- More robust cache update logic (in get-children and get-data event callbacks)
- Avoid overhead of incrementing/decrementing the outstandingOps atomic integer post-initialization