This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Having Trouble understanding CNI string allocation


Thank you very much --

 How's about these random errors when doing all String
 allocation dynamically (i.e. java::lang::String * is
 only used for one call and then forgotten). Is this
 explainable from within CNI or should I try to find
 the misbehaviour in the JDBC driver ?

BTW I'm sing gcj-3.3.3 as shipped with Fedora Core 2

Thanks

Sebastian


Andrew Haley wrote:
Sebastian Kloska writes:
> > In an attempt to reduce the calls to JvNewStringUTF I was trying
> to store the colum names I like it access in an array of
> 'java::lang::String *', but after initializatons (as a none static
> class array) and befor using these pointers in another class method
> the strings seem to be gone. So it seems I do not realy understand
> the concept of how long I'm alowed to hold a (valid ?) reference
> to an JAVA object (e.g. String) and that somehow the garbage
> collector is 'stealing' these from me....


The gcj garbage collector will recycle memory when it determines that
there are no live references to it.  The gc won't look inside
structures allocated by malloc() or the C++ runtime library's new().

If you want to make an array of 'java::lang::String *' you had better
make it a JArray<jstring>, not a C++ array, and you'd better make sure
that a pointer to that jarray is live in a Java object somewhere, or
the strings will be deallocated.

Andrew.


--
**********************************
Dr. Sebastian Kloska
Head of Bioinformatics
Scienion AG
Volmerstr. 7a
12489 Berlin
phone: +49-(30)-6392-1708
fax:   +49-(30)-6392-1701
http://www.scienion.de
**********************************


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]