Go to file
Norman Maurer 6248db5905 Minimize memory footprint of HashedWheelTimer and context-switching
Motivation:
At the moment there are two issues with HashedWheelTimer:
* the memory footprint of it is pretty heavy (250kb fon an empty instance)
* the way how added Timeouts are handled is inefficient in terms of how locks etc are used and so a lot of context-switching / condition can happen.

Modification:
Rewrite HashedWheelTimer to use an optimized bucket implementation to store the submitted Timeouts and a MPSC queue to handover the timeouts.  So volatile writes are reduced to a minimum and also the memory foot-print of the buckets itself is reduced a lot as the bucket uses a double-linked-list. Beside this we use Atomic*FieldUpdater where-ever possible to improve the memory foot-print and performance.

Result:
Lower memory-footprint and better performance
2014-05-11 15:10:44 +02:00
all Generate the default JAR to make oss.sonatype.org happy 2014-05-03 17:33:04 +09:00
buffer [maven-release-plugin] prepare for next development iteration 2014-04-30 15:40:54 +02:00
codec Use ByteBuf.readSlice(...).retain() to minimize memory copies. 2014-05-10 16:05:50 +02:00
codec-http Adding short-curcuit option for CORS 2014-05-06 12:16:09 +02:00
codec-socks [maven-release-plugin] prepare for next development iteration 2014-04-30 15:40:54 +02:00
common Minimize memory footprint of HashedWheelTimer and context-switching 2014-05-11 15:10:44 +02:00
example [maven-release-plugin] prepare for next development iteration 2014-04-30 15:40:54 +02:00
handler [maven-release-plugin] prepare for next development iteration 2014-04-30 15:40:54 +02:00
license [#1259] Add optimized queue for SCMP pattern and use it in NIO and native transport 2014-02-27 11:44:06 +01:00
microbench [maven-release-plugin] prepare for next development iteration 2014-04-30 15:40:54 +02:00
tarball [maven-release-plugin] prepare for next development iteration 2014-04-30 15:40:54 +02:00
testsuite [maven-release-plugin] prepare for next development iteration 2014-04-30 15:40:54 +02:00
transport [#2485] Use RecvByteBufAllocator for all allocations related to read from Channel 2014-05-10 15:28:02 +02:00
transport-native-epoll [#2485] Use RecvByteBufAllocator for all allocations related to read from Channel 2014-05-10 15:28:02 +02:00
transport-rxtx [maven-release-plugin] prepare for next development iteration 2014-04-30 15:40:54 +02:00
transport-sctp [maven-release-plugin] prepare for next development iteration 2014-04-30 15:40:54 +02:00
transport-udt [maven-release-plugin] prepare for next development iteration 2014-04-30 15:40:54 +02:00
.fbfilter.xml Update license headers 2012-06-04 13:31:44 -07:00
.fbprefs Updated Find Bugs configuration 2009-03-04 10:33:09 +00:00
.gitignore Format and partially describe Gitignore 2013-12-10 07:04:38 +01:00
.travis.yml Travis CI branch whitelisting 2013-03-11 09:55:43 +09:00
CONTRIBUTING.md Move the pull request guide to the developer guide 2014-03-12 13:18:14 +09:00
LICENSE.txt Relicensed to Apache License v2 2009-08-28 07:15:49 +00:00
NOTICE.txt [#1259] Add optimized queue for SCMP pattern and use it in NIO and native transport 2014-02-27 11:44:06 +01:00
pom.xml Update netty-build to version 20 2014-05-08 10:00:38 +09:00
README.md Update README.md 2014-01-16 14:38:36 +09:00

Netty Project

Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.

How to build

For the detailed information about building and developing Netty, please visit the developer guide. This page only gives very basic information.

You require the following to build Netty:

Note that this is build-time requirement. JDK 5 (for 3.x) or 6 (for 4.0+) is enough to run your Netty-based application.

Branches to look

The 'master' branch is where the development of the latest major version lives on. The development of all other major versions takes place in each branch whose name is identical to its major version number. For example, the development of 3.x and 4.x resides in the branch '3' and the branch '4' respectively.