This is the mail archive of the
java@gcc.gnu.org
mailing list for the Java project.
Re: [GCJ-core] dynamically unloading native libraries
- From: Andrew Haley <aph at redhat dot com>
- To: Sylvain Marié <sylvainmarie2 at yahoo dot fr>
- Cc: java at gcc dot gnu dot org
- Date: Tue, 07 Oct 2008 13:41:57 +0100
- Subject: Re: [GCJ-core] dynamically unloading native libraries
- References: <590931.68795.qm@web25908.mail.ukl.yahoo.com>
Sylvain Marié wrote:
> Hi all,
>
> I am working on a project involving GCJ on an embedded Linux busybox.
> We are particularly fond of the ability of GCJ to use java in "compiled mode".
>
> In order to be able to use both native code (.so), compiled java (.so) and bytecode java
> (.jar, .class) together with a module loading system, we are running some tests to validate
> that dynamic code loading/unloading works fine.
>
> Strangely enough this does not work on GCJ, whereas it works fine on sun's jvm (a native
> library is fully unloaded once its classloader is garbaged out).
>
> see also :
>> openJDK, in jdk/src/share/classes/java/lang/ClassLoader.java: finalize method unloads native libraries
>
>
> Is this feature planned to be inetgrated in next versions of the runtime ?
No. While this could be done, it would be quite tricky.
The core problem is that pointers to code (e.g. return addresses in
the stack) aren't recognized by the garbage collector as pointers to
the corresponding classes. You'd have to teach the collector to
convert code addresses to classes, and then garbage collect the
classes.
Andrew.