Etienne Gagnon wrote: > 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 *).
In case you chose the finalization-like + revival way, then I don't see any significant performance hit of multiple-step convergence! For one thing, you'll probably agree with me that it is quite unlikely to take more than 1 step to converge in most cases, and the additional work in the other cases is still quite insignificant relative to the remaining collection work! 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