We are looking for volunteers to test out next release of jNetPcap version 1.3 beta 4, before its made available to the general public.
If you are interested in becoming part of the "tester community", please send an email to firstname.lastname@example.org.
Your help is greatly appreciated. The extra testing before making a public jNetPcap releases, will ensure that we publish the most stable software possible. The benefit is that you can get early access to the latest code and have a greater voice in the development process.
Here is a summary of changes that you would be testing with a private build. Just for the tester community.
(in addition to 1.3 beta 3 code-base)
1) Done away with object finalization (in-depth Sun/Oracle article) - cleanup is done via
ReferenceQueue in a specialized cleanup object called
DisposableGC. Runs as a 'system' daemon thread and handles native memory release. Sleeps most of the time. It also handles the low memory (
nio.ms) and no memory (
nio.mx) conditions. Efficiently blocks the 'allocating' thread using semaphores as a barrier while the
DisposableGC thread, using JVM GC and its own queues, tries to free up native memory to fall below 'nio.mx' limit. Throws an OOM exception when unable to freeup memory.
DisposableGC object is a great way to have a behind the scenes look and get reports on near realtime native memory usage, and generation queues, via its logging capabilities.
DisposableGC: [immediate=698(23Mb)]=46K( 1.49Gb) [0sec=340(11.1Mb),10sec= 1K(45.3Mb),60sec= 20( 2.9Mb)]=59.3Mb DisposableGC: [immediate=726(24Mb)]=46K( 1.52Gb) [0sec=325(10.6Mb),10sec= 1K(46.2Mb),60sec= 27( 3.1Mb)]=60.0Mb DisposableGC: [immediate=718(24Mb)]=47K( 1.54Gb) [0sec=322(10.5Mb),10sec= 1K(47.1Mb),60sec= 35( 3.4Mb)]=61.0Mb
2) Implemented a native memory allocation limit (similar to
-Xmx option for java side) via a command line property
nio.mx (and few other longer aliases to allow resolving of property name clashes with other libraries in the unlikely event that happens.) Also other tuning properties are introduced such as:
nio.ms - a soft limit, and
nio.blocksize for controlling size of memory chunks in which memory is allocated.
3) Various optimizations in peering, scanning and copying of data - nearly 10x performance gain
4) Fixed a bug in how ethernet payload and FCS is calculated (based on IP header info).
Overall, the changes have a very positive impact on memory utilization and performance. The wild native/process memory swings are no more.