Pivotal GemFire 8.2.8 or prior to 8.x releases and 9.3.0 or prior to 9.x releases
When trying to destroy region entries within a transaction on a region which has eviction configured, those entries are not actually destroyed until the eviction action for them is triggered. In particular, if the eviction action is not triggered because the condition is never met, those region entries will not ever be destroyed giving the appearance of a "memory leak."
According to the report (GEODE-4651), when destroying region entries from a region, which has eviction configured within a transaction, the transaction code adds the destroyed entries back to the eviction list. This can cause the entries not to be garbage collected until eviction action for them is triggered.
The issue has been fixed and the fix is available with the latest major/minor releases of GemFire (8.2.9+, 9.3.1+, and 9.4.0 or later). For earlier versions, the possible workarounds are:
- To mitigate memory pressure, consider triggering eviction actions more frequently;
- Destroy region entries outside of transaction; or
- Do not configure eviction where you intend to destroy region entries within transactions.
The issue was internally reported as GEM-1889 and will appear in the Release Notes as either GEM-1889 or GEODE-4651 when the fix is generally available.