Hi,

FYI, JamVM does something similar.  All objects effectively have a
finalizer because java.lang.Object implements an empty finalizer, so
if a VM didn't do something, _all_ objects would need finalization.

JamVM therefore records a class as having a finalizer only if it has
overridden the one in java.lang.Object.  The assumption is that it
will only provide it's own finalizer if it actually has something to
do, so the code currently doesn't check if it is empty or not.  I will
add this check.

Rob.

On 12/21/06, Christian Thalinger <[EMAIL PROTECTED]> wrote:
On Wed, Dec 20, 2006 at 10:28:13AM +0100, Christian Thalinger wrote:
> On Wed, Dec 20, 2006 at 09:34:29AM +0100, Mark Wielaard wrote:
> > Interesting. Even though Enums should never be initialized "by hand"
> > this is something a garbage collector should be aware of. Do garbage
> > collectors already handle empty finalize() methods as if there was no
> > finalizer?
>
> In CACAO we currently search for a finalizer method and add it if one is
> found.  We don't check if there is actually code in it.

But we set the finalizer for java.lang.Object to NULL, which means we
actually don't have any finalizers in subclasses.  The case, where an
empty finalizer is given in a subclass, isn't handled yet.  I'll change
that.

- twisti



Reply via email to