4.100.0
What's Changed
-
BUG FIX: Fixed unbounded memory leak in
Converter.FULL_CONVERSION_CACHE. Each short-livedConverterinstance (e.g., one perJsonIo.toJava()call) cached inheritance-resolved conversions keyed by its uniqueinstanceIdin a staticConcurrentHashMap. 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 ofConverterinstances created. -
PERFORMANCE: Optimized
Converter.getCachedConverter()to skip the now-unnecessary instance-specific lookup, eliminating a wastedConversionPairallocation per call. -
Updated test dependencies: JUnit 5.14.2→5.14.3, Jackson 2.21.1→2.21.2