Optimize Jackson resource management in codecs

Prior to this commit, references to `JsonGenerator` and
`ByteArrayBuilder` were not closed/released within codecs calls.
This prevents Jackson from reusing more efficiently shared memory
resources.

This commit properly closes/releases Jackson resources in Spring MVC,
Spring WebFlux and Spring Messaging codecs.
A benchmark on WebFlux codecs (in both single value/streaming mode)
shows significant throughput and allocation improvements for small
payloads.

Closes gh-25910
This commit is contained in:
Brian Clozel
2020-10-20 15:36:23 +02:00
parent db3d537e72
commit 7bee3d1574
5 changed files with 67 additions and 52 deletions

View File

@@ -6,7 +6,7 @@
</Console>
</Appenders>
<Loggers>
<Logger name="org.springframework.web" level="debug" />
<Logger name="org.springframework.web" level="warn" />
<Logger name="org.springframework.beans" level="warn" />
<Logger name="org.springframework.binding" level="warn" />
<Logger name="org.springframework.http" level="warn" />