diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultConfiguration.java b/jOOQ/src/main/java/org/jooq/impl/DefaultConfiguration.java index c5214297b6..931312e220 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultConfiguration.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultConfiguration.java @@ -578,10 +578,7 @@ public class DefaultConfiguration implements Configuration { */ @Override public final Configuration set(RecordMapperProvider newRecordMapperProvider) { - this.recordMapperProvider = newRecordMapperProvider != null - ? newRecordMapperProvider - : new DefaultRecordMapperProvider(this); - + this.recordMapperProvider = newRecordMapperProvider; return this; } @@ -762,7 +759,12 @@ public class DefaultConfiguration implements Configuration { */ @Override public final RecordMapperProvider recordMapperProvider() { - return recordMapperProvider; + + // [#3915] Avoid permanently referencing such a DefaultRecordMapperProvider from this + // DefaultConfiguration to prevent memory leaks. + return recordMapperProvider != null + ? recordMapperProvider + : new DefaultRecordMapperProvider(this); } /**