From 705d82b82fe88401d30cd8249e571ee4770e17cc Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Sun, 1 Nov 2015 14:54:35 +0100 Subject: [PATCH] Share Integer.MAX_VALUE As it turns out Integer.MAX_VALUE is not usually cached for boxing. Add an explicit cache to eliminate ~160K Integers wasting 2.5MB on a simple SchemaContext. Change-Id: I47b5b00358d5726eddc8baf675bda1f850823362 Signed-off-by: Robert Varga --- .../effective/EffectiveConstraintDefinitionImpl.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/EffectiveConstraintDefinitionImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/EffectiveConstraintDefinitionImpl.java index 1c4032cebc..a91f518ab0 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/EffectiveConstraintDefinitionImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/EffectiveConstraintDefinitionImpl.java @@ -16,6 +16,8 @@ import org.opendaylight.yangtools.yang.model.api.MustDefinition; import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath; public final class EffectiveConstraintDefinitionImpl implements ConstraintDefinition { + private static final Integer UNBOUNDED_INT = Integer.MAX_VALUE; + private static final String UNBOUNDED_STR = "unbounded"; private final RevisionAwareXPath whenCondition; private final Set mustConstraints; private final Boolean mandatory; @@ -33,9 +35,9 @@ public final class EffectiveConstraintDefinitionImpl implements ConstraintDefini MaxElementsEffectiveStatementImpl firstMaxElementsStmt = parent .firstEffective(MaxElementsEffectiveStatementImpl.class); - String maxElementsArg = (firstMaxElementsStmt == null) ? "unbounded" : firstMaxElementsStmt.argument(); - if (maxElementsArg.equals("unbounded")) { - this.maxElements = Integer.MAX_VALUE; + String maxElementsArg = (firstMaxElementsStmt == null) ? UNBOUNDED_STR : firstMaxElementsStmt.argument(); + if (UNBOUNDED_STR.equals(maxElementsArg)) { + this.maxElements = UNBOUNDED_INT; } else { this.maxElements = Integer.valueOf(maxElementsArg); } -- 2.36.6