Salikh Zakirov wrote: > I have another concern though: > just before starting "final unloading" collection, we scan vtable marks and > identify > the candidates for unloading. During the "final unloading" collection, the > candidate classloader roots are reported as week. At the end of the trace, > we need to rescan vtable marks and "revive" the classloader which were found > in possession of live objects. This techniques is exactly the same as the one > used for object finalization. > > However, in contrast with finalization, we will need to repeat reviving > classloaders which have non-0 vtable marks until the process converges, and no > new classloaders are revived. (* in finalization, both dead and live objects > in finalization > queue are revived, and thus the revival converges in just 1 step *).
"Revival" is only needed if you use the finalization-like approach. If you only do class-unloading GC when the nursery is empty, then no revival is needed. In this case, after GC you only need to revert weak references to hard ones. Nulled weak references relate to dead class loaders for which you can definitely free the native resources. Etienne -- Etienne M. Gagnon, Ph.D. http://www.info2.uqam.ca/~egagnon/ SableVM: http://www.sablevm.org/ SableCC: http://www.sablecc.org/
signature.asc
Description: OpenPGP digital signature