From af16d2e800fbad3b91655214498f8737f915c7ac Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 25 Oct 2016 19:22:39 +0200 Subject: [PATCH] BUG-6522: grow namespaces lazily NamespaceStorageSupport is the superclass of StatementContextBase, hence allocating a default-sized HashMap results in ~75MiB wasted space. Add lazy expansion to limit the overhead associated with tracking these. Change-Id: I0825aee92487c94421ef9e505152bbc5fc7383cb Signed-off-by: Robert Varga --- .../yang/parser/stmt/reactor/NamespaceStorageSupport.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/NamespaceStorageSupport.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/NamespaceStorageSupport.java index c9a9cde762..c8ae51ea76 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/NamespaceStorageSupport.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/NamespaceStorageSupport.java @@ -22,7 +22,7 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils; abstract class NamespaceStorageSupport implements NamespaceStorageNode { - private final Map, Map> namespaces = new HashMap<>(); + private Map, Map> namespaces = new HashMap<>(); @Override public abstract NamespaceStorageNode getParentNamespaceStorage(); @@ -111,6 +111,10 @@ abstract class NamespaceStorageSupport implements NamespaceStorageNode { if (localNamespace == null) { checkLocalNamespaceAllowed(type); localNamespace = new HashMap<>(1); + + if (namespaces.isEmpty()) { + namespaces = new HashMap<>(1); + } namespaces.put(type, localNamespace); } localNamespace.put(key,value); -- 2.36.6