Keeping oops

Tom Rodriguez Thomas.Rodriguez at Sun.COM
Tue Dec 11 13:45:12 PST 2007


> 
> a) I need to create a HandleMark, somewhere really low in the stack - 
> say in the constructor of a thread or one of its first functions, and 
> have something like hashtable<handle, handle>

I don't think you could or should be able to get that to work that way. 
  If you want to use handles use JNI global handles.  See 
JNIHandles::make_global.  This is how the compilers keep long term 
references to objects.  Just remember that you have to explicitly delete 
them.

> b) Keep pointers to oops (oop*) allocated, and pass them to the GC when 
> it comes by, like  hashtable<oop*, oop*>::oops_do(OopClosure* f) ? As 
> long as the oop* still points to that particular oop, it is not moved by 
> GC, right ?

You could do this but you have to do more work to plug it all in.  JNI 
global handles are probably the way to go.

tom

> Which one of those is feasible / recommended ?
> 
> Regards & sorry again
> Peter
> 
> 
> 
> 2007/12/11, Peter Helfer <peter.helfer.java at gmail.com 
> <mailto:peter.helfer.java at gmail.com>>:
> 
>     I'm having a hashtable, which should keep two oops 'grouped'
>     together. This
> 
> 



More information about the hotspot-runtime-dev mailing list