style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-7505528228218001"
data-ad-slot="1225241371">

1.3 beta 4 testers needed!

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 testers@slytechs.com.

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.

Also the 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.