harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From FaeLLe <mrbillcollec...@gmail.com>
Subject Re: Java Distributed Garbage Collection in RMI
Date Wed, 23 Aug 2006 18:33:57 GMT
Hello Mikhail,

Thanks for the reply !

However your email only contained the attachement of the output do not see
the modified sources. If you could reply with them it would be nice.

Thanks,

- Vikram Mohan

On 8/23/06, Mikhail Markov <mikhail.a.markov@gmail.com> wrote:
>
> Hi Vikram,
>
> First of all, what rmi module are you using: rmi or rmi2? rmi module does
> not support sun.* properties. Instead it supports a parallel structure of
> harmony.* ones.
>
> About your question about DGC (i'll use rmi module as an example):
> Remote object (on server side!) could be collected if all the conditions
> below are met:
> 1) (Of course) no hard references in local VM
> 2) no remote references from from other VMs
> 3) no in-progress remoted calls
>
> Here is one of the simplest test scenarious showing how to check these
> conditions:
>
> - run rmi-registry in separate VM
> - export remote object, register it in the registry and remove hard
> references to this object
> - kill rmi-registry VM
> - wait for a period of time longer than the one specified by "
> java.rmi.dgc.leaseValue" property (the default is 10 min)
> - if remote object implements Unreferenced then it's unreferenced() method
> should be called here
> - run GC - the object should be collected and it's finalize() method
> should be called
>
> I think your code is doing a lot of extra staff so i've modified it to
> implement this test scenarious (see attachment).
> I did not use ProcessBuilder class as Harmony does not have it yet. The
> output of the test is also attached.
>
> Hope this helps.
>
> Regards, Mikhail
> Intel MIddleware Products Division
>
>
>
> >  > Been experimenting with the DGC interface of Java RMI and as far as I
> > have understood there is no way to make a remote object be garbage collected
> > other than invoke System.gc() and let it be collected over time.
> > >
> > > I however notice that the internal calls can be tracked by setting the
> > following system properties,
> > >
> > >         System.setProperty("java.rmi.server.logCalls", "true");
> > >         System.setProperty ("sun.rmi.dgc.logLevel", "VERBOSE");
> > >         System.setProperty("sun.rmi.dgc.logCalls", "true");
> > >
> > > What I was wondering is if you had any suggestions on how to actually
> > ensure that the remote object has been collected. I tried placing
> > System.out.println() statements in the finalize() and unreferenced()
> > methods (the client also implements the Unreferenced interface) however it
> > seems to generate no such output.
> > >
> > > Neither do the internal rmi logs that should be displayed in output in
> > verbose mode show any indication of this happening.
> > >
> > > I have attached the code if you would be willing to examine it and let
> > me know what I am not doing correctly. Ps. I have included them in zip
> > format and as Java sources whichever is convinient for you.
> > >
> > > TestDistributedGarbageCollection.java is the RMI server and the
> > EchoClient.java is the RMI client.
> > >
> > > Regards,
> > >
> > > - Vikram Mohan
> >
>
> ---------------------------------------------------------------------
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
>
>
>


-- 
www.FaeLLe.com
www.VikramMohan.com

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message