We are investigating recurring OOMs in a production TDS 5.9 deployment using EDAL 1.5.3.3.
A heap dump analysed with Eclipse MAT showed that:
LookUpTableGrid.CACHE retained ~4.56 GB (~90%) of the analysed heap
- the cache contained 390
CurvilinearCoords -> LookUpTableGrid entries
- the GC root path confirmed the static
CACHE was keeping these objects alive
The cache is currently an unbounded static HashMap with no size limit, TTL or eviction policy.
A later JVM also showed 620 live instances of each of:
CurvilinearCoords
LookUpTableGrid
LookUpTable
This looks consistent with curvilinear grids accumulating over the JVM lifetime.
Would it make sense to make this cache bounded or add an eviction/expiry policy?
Related TDS issue: Unidata/tds#689
Possibly related: Unidata/tds#684
We are investigating recurring OOMs in a production TDS 5.9 deployment using EDAL 1.5.3.3.
A heap dump analysed with Eclipse MAT showed that:
LookUpTableGrid.CACHEretained ~4.56 GB (~90%) of the analysed heapCurvilinearCoords -> LookUpTableGridentriesCACHEwas keeping these objects aliveThe cache is currently an unbounded static
HashMapwith no size limit, TTL or eviction policy.A later JVM also showed 620 live instances of each of:
This looks consistent with curvilinear grids accumulating over the JVM lifetime.
Would it make sense to make this cache bounded or add an eviction/expiry policy?
Related TDS issue: Unidata/tds#689
Possibly related: Unidata/tds#684