BUG-648: do not keep HashMap$Values around 68/7468/2
authorRobert Varga <rovarga@cisco.com>
Wed, 28 May 2014 21:30:06 +0000 (23:30 +0200)
committerTony Tkacik <ttkacik@cisco.com>
Thu, 29 May 2014 12:28:44 +0000 (12:28 +0000)
commitbda9bbb102e232c8850e793c48afa789c155ccd6
treee79f37ff5934d9189d936bfd59e2323d1a547e5d
parent2d54e91ba56620735735b0d4f7e47a539b8b4ff5
BUG-648: do not keep HashMap$Values around

Profiling has identified that we keep a lot (>600K) of HashMap$Values
objects around. This is caused by our class hierarchy, which forces the
Container nodes to supply their Iterable values at construction time --
which means they have to capture children.values() and wrap it in an
UnmodifiableIterable.

This patch creates splits the functionality of
AbstractImmutableNormalizedNode into two:

AbstractImmutableNormalizedNode, which just holds the identifier plus
the infrastructure layout. AbstractImmutableNormalizedValueNode, which
additionally holds the value.

Container nodes are then made subclasses of the former, which allows
them to provide getValue() dynamically, thus avoiding the unnecessary
instantiation.

Change-Id: I3fb894b0eeef3cd4a7b0de7634d4638c72c66fc3
Signed-off-by: Robert Varga <rovarga@cisco.com>
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableLeafNodeBuilder.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableLeafSetEntryNodeBuilder.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableLeafSetNodeBuilder.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapNodeBuilder.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableOrderedLeafSetNodeBuilder.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableOrderedMapNodeBuilder.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableUnkeyedListNodeBuilder.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/nodes/AbstractImmutableDataContainerNode.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/nodes/AbstractImmutableNormalizedNode.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/nodes/AbstractImmutableNormalizedValueAttrNode.java [moved from yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/nodes/AbstractImmutableNormalizedAttrNode.java with 87% similarity]
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/nodes/AbstractImmutableNormalizedValueNode.java [new file with mode: 0644]