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