Skip to content

4.100.0

Choose a tag to compare

@jdereg jdereg released this 10 Apr 13:23
· 28 commits to master since this release

What's Changed

  • BUG FIX: Fixed unbounded memory leak in Converter.FULL_CONVERSION_CACHE. Each short-lived Converter instance (e.g., one per JsonIo.toJava() call) cached inheritance-resolved conversions keyed by its unique instanceId in a static ConcurrentHashMap. When the instance was GC'd, its entries remained forever. In production under sustained load, this grew to 1GB+. Fix: cache resolved conversions at the shared level (instanceId=0L) when no user-added conversions exist; skip static caching otherwise. The cache is now bounded by the number of unique (source, target) type pairs, not by the number of Converter instances created.

  • PERFORMANCE: Optimized Converter.getCachedConverter() to skip the now-unnecessary instance-specific lookup, eliminating a wasted ConversionPair allocation per call.

  • Updated test dependencies: JUnit 5.14.2→5.14.3, Jackson 2.21.1→2.21.2