Skip navigation

Netty 4.0.40.Final and 4.1.4.Final released

I'm happy to announce the latest bug-fix releases for our 4.0.x and 4.1.x series today.

The releases contain bug-fixes, performance enhancements and new features.

Important: These releases also fix a regression (see (#5577) and (#5569) for more details) introduced in 4.0.39.Final and 4.1.3.Final which may lead to more memory usage when write operations or allocations happen from different threads. So please consider upgrading as soon as possible.

The most important changes for 4.0.40.Final and 4.1.4.Final are:

  • Set Recycler DEFAULT_INITIAL_MAX_CAPACITY to a more sane value (#5589)
  • Ensure shared capacity is updated correctly when WeakOrderQueue is collected (#5577)
  • Ensure WeakOrderQueue can be collected fast enough (#5569)
  • Ensure attributes and contained object can be collected as fast as possible (#5575)

The most important changes for 4.1.4.Final only are:

  • Correctly return a retained slice if called SwappedByteBuf.retainedSlice(...) (#5593)
  • Allow ndots=0 in DnsNameResolver and search domain (#5571)

For the details and all changes, please browse our issue tracker for 4.0.40.Final and 4.1.4.Final.

All changes that are in 4.0.40.Final are also included in 4.1.4.Final. All changes only have milestone 4.1.4.Final do not affect 4.0.40.Final.

As always, please let us know if you find any issues. We love feedback!

Special notes

This section highlights changes which we feel deserve some more attention.


The Recycler which is used by different parts of Netty had a default max capacity (per thread) of 262144 objects. We felt this is not a "sane" value and may result excessive memory usage if allocations happen in bursts. We changed it to 32768 (per thread). If you want to preserve the old behavior you can use -Dio.netty.recycler.maxCapacity=262144.

Thank You

Every idea and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report an unintended omission.