Hi, folks, 

Class unloading is an optimization Harmony wants to have, and it
should be straightforward to implement the class unloading semantics
proposed by Java Language Specification. We want to push this a bit
further to allow more VM data structures be reclaimed. We call them VM
objects w.r.t. App objects, because they are maintained by VM.

They are basically two approaches to unload the classes, one is to
encode the VM object similarly as App object with a header, then GC
can treat them uniformly (almost); the other approach treats class
unloading specially, which reclaims a class loader together with all
its associated VM objects. The former approach can reclaim as more as
possible VM objects (besides other benefits such as code placement)
but requires more GC overhead, while the latter approach can reclaim a
class loader related objects all together if they are arranged
properly.

I think the latter approach is good enough for Harmony to have
initially. The uniformed GC approach can be introduced later for
memory-constraint system. Do you folks agree?

Thanks,
xiaofeng

==
Intel Managed Runtime Division

Reply via email to