What is the reason for the additional indirection in Handle?

Gary Benson gbenson at redhat.com
Mon Sep 8 00:30:48 PDT 2008


Ramón García wrote:
> The Handle class, and subclasses like KlassHandle have an additional
> indirection to the Oop they are pointing to.
> 
> Instead of storing the oop inside (which is already a pointer), 
> they store a pointer to the oop. This causes an additional memory
> allocation of an object of size pointer, to contain the actual
> pointer to the oop.
> 
> Why?
> 
> I guess it must have something to do with garbage collection, so
> that in case the underlying oop is moved, the pointer is updated. I
> guess a pointer in the stack cannot be updated. Or perhaps with
> scanning: the stack is not scanned for references, but the malloced
> heap where the pointers to references are.

It is for garbage collection.  You need to use handles to protect
oops across function calls that might GC.

Cheers,
Gary

-- 
http://gbenson.net/



More information about the hotspot-runtime-dev mailing list