File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Java in General and the fly likes Loading java Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of EJB 3 in Action this week in the EJB and other Java EE Technologies forum!
JavaRanch » Java Forums » Java » Java in General
Bookmark "Loading java "modules"" Watch "Loading java "modules"" New topic
Author

Loading java "modules"

Paolo Lemos
Greenhorn

Joined: Aug 19, 2011
Posts: 5
Hello forum.

In mi application i'm using ServiceLoader to load modules(classes from .jar file) with diferents ClassLoaders in order to completely unload them when not needed from the context of the application and from the JVM itself. I know maybe is not a common topic "unload classes from JVM", there are some conditions for that to happen, so i am making the necesary effort. To make sure if all is working like expected im tracing the load and unload of classes with -XX:+TraceClassLoading and -XX:+TraceClassUnloading, the info from this parameters shows me that i can do a complete unload of any module from mi app and from the JVM itself (unload from the JVM happens during a complete GC). All this seems to work fine... but mi question is why the .jar files from where the module classes was loaded are keep open by the JVM?, that .jars cant be removed but the JVM says to have unloaded the classes from them. Obiusly this is during JVM execution, but why keep open that .jar files if the JVM has no class loaded from them?, there is any thing i can do to force the JVM to free that .jar files?.

Thanks in advance, and sorry bad english.
Jesper de Jong
Java Cowboy
Saloon Keeper

Joined: Aug 16, 2005
Posts: 13869
    
  10

Hello Paolo, welcome to the Ranch.

You're asking quite a specific question about an advanced topic, and I don't have a direct answer for you. I think the question is hard to answer, because it depends on the implementation details of the JVM. One place you could start looking is at the source code of OpenJDK (Oracle's Java 6 and Java 7 are almost equal to OpenJDK). But I think it will not be an easy task to find this out from the source code...


Java Beginners FAQ - JavaRanch SCJP FAQ - The Java Tutorial - Java SE 7 API documentation
Scala Notes - My blog about Scala
Paolo Lemos
Greenhorn

Joined: Aug 19, 2011
Posts: 5
Jesper de Jong wrote:Hello Paolo, welcome to the Ranch.

You're asking quite a specific question about an advanced topic, and I don't have a direct answer for you. I think the question is hard to answer, because it depends on the implementation details of the JVM. One place you could start looking is at the source code of OpenJDK (Oracle's Java 6 and Java 7 are almost equal to OpenJDK). But I think it will not be an easy task to find this out from the source code...


Glad to hear something from somebody. Thanks!
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Loading java "modules"
 
Similar Threads
Can I use local interface?
Deserialization problem - InvalidClass w/ negative serialVersionUid for local class
JAR files cached in JVM ?
Designing a pluggable application.
Order in which class is searched