On Fri, 24 Apr 2026 17:55:18 GMT, Ashay Rane <[email protected]> wrote:

> Prior to this patch, every HTTP request created a new 16KB buffer for
> encoding the header, which is typically only a few hundred bytes long.
> This increased pressure on the garbage collector when the client created
> lots of requests.  This patch instead makes the header encoder reuse the
> buffer that is created during the handling of the first request.
> 
> The caveat, however, is that the downstream consumers of the header are
> asynchronous, so the encoder needs to take special care to ensure that
> it doesn't modify or invalidate the buffer after it hands the buffer
> over to the downstream asynchronous pipeline.  To resolve this, this
> patch snapshots the buffer data into compact copies sized to the actual
> encoded length.  Doing so makes the buffer immediately available for
> reuse via `clear()` and `limit()`.
> 
> For typical requests, this reduces per-request allocation from 16KB to
> a few hundred bytes (i.e. the size of the compact copy of the encoded
> headers), with the 16KB encoding buffer allocated once per connection
> instead of once per request.
> 
> ---------
> - [x] I confirm that I make this contribution in accordance with the [OpenJDK 
> Interim AI Policy](https://openjdk.org/legal/ai).

Merged the master branch to pull an unrelated build fix.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/30931#issuecomment-4316659414

Reply via email to