-
Improvement
-
Resolution: Done
-
Highest
-
None
-
None
-
None
-
Operating System: All
Platform: All
Analysis of a memory snapshot with vendor models shows we end up with a SchemaContext which weighs about 240MB. Further analysis of duplicate objects shows we have ~4000 instances of DescriptionEffectiveStatementImpl wasting ~400kB, which refer to a single description statement defined in a grouping.
This hints at us not having the understanding that a statement has been copied and unmodified from a grouping. Analyze the exact cause for this and fix it either by not performing a copy, or squashing resulting duplicates.
This theory is reinforced by the fact that the same dump shows ~64K WhenEffectiveStatementImpl objects (23x groups of 2769 instances each) coming from a construct like:
grouping foo {
leaf bar {
when "../x";
}
}
A similar situation happens with UnitsEffectiveStatementImpl – 15K instances wasting 450kB.
- blocks
-
YANGTOOLS-1067 Use flyweight EffectiveStatement implementations
- Resolved
- is blocked by
-
YANGTOOLS-784 Defer statement initialization in InferredStatementContext
- Resolved
-
YANGTOOLS-859 Augmenting a container with if-feature
- Resolved
- is duplicated by
-
YANGTOOLS-779 OOM expection while parsing 27.1 MB of YANG with 2GO RAM
- Resolved
- relates to
-
YANGTOOLS-1065 Minimize EffectiveStatement implementation footprint
- Resolved
-
YANGTOOLS-1066 SchemaPath identification of SchemaNodes is costly and useless
- Resolved