The problem is manyfold and deep.
Contrary to popular "belief" native libraries _can_ and _are_ properly
unloaded by the JVM; this is documented and works. A native library is
associated with the classloader of the class that loaded it; when that
classloader is GC'ed, the library will be natively unloaded. For details
look into the code of java.lang.ClassLoader.finalize() where any loaded
libraries are released.
Note that I said "when the classloader is GC'ed", NOT "when the
classloader is not referenced any more". A container calling System.gc()
may or may not help; on servers it is usually explicitly disabled.
Different collectors (CMS, parallel, G1) have different aggressiveness and
consequently you will see different behaviour in all cases.
So it seems that JBoss does not free your service's classloader properly,
meaning either "in time" or "not at all" (both of which would lead to the
symptom that you observed). This can be caused by anything from bugs in
JBoss, the usual commons-logging cross-classloader logger reference leaks,
to static singletons in the OpenSplice Java library, or even the native
code still referencing Java objects.
It is not possible to tell which one of these factors are at play in your
case without a very detailed inspection of both your code and a live JVM -
though I suspect a combination of multiple causes, covering each other up. :(
regards
Holger
_______________________________________________
OpenSplice DDS Developer Mailing List
Deve...@opensplice.org
Subscribe / Unsubscribe http://www.opensplice.org/mailman/listinfo/developer