CNI and garbage collection

Marcus G. Daniels mgd@swarm.org
Thu Jul 19 19:49:00 GMT 2001


>>>>> "BM" == Bryce McKinlay <bryce@waitaki.otago.ac.nz> writes:

BM> So how to keep a pointer, associated with a given class or object,
BM> to your native object? One solution is to declare a field (in
BM> Java) of the type gnu.gcj.RawData. This class is treated specially
BM> by the garbage collector, and can be used for storing a pointer to
BM> some native, non-Java object. RawData fields will not be marked by
BM> the GC, so you need to dealocate them explicitly (perhaps from a
BM> finalizer).
Works like a charm. Thanks very much. 
MD> But what about the C++ objects inside of the Java object? Is
MD> there a special way to allocate them?
>>>>> "JS" == Jeff Sturm <jsturm@one-point.com> writes:

JS> You could try to override the "new" operator to place C++
JS> objects where they will be traced. But that exposes details of the
JS> collector implementation, and could have other pitfalls when done
JS> together with libgcj. See boehm-gc/include/gc_cpp.h for more info.
Cool, thanks for the pointer. (And to both of you for pointing out that
Boehm GC doesn't move things!)


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /