Here is what jhat reports for the is OOME:

Instance Counts for All Classes (excluding platform)

38006784 instances of class org.apache.derby.impl.store.access.sort.Node 
26547422 instances of class org.apache.derby.impl.store.raw.data.RecordId 
26524427 instances of class [Lorg.apache.derby.iapi.types.DataValueDescriptor; 
26524237 instances of class org.apache.derby.iapi.types.SQLTimestamp 
26524235 instances of class 
org.apache.derby.impl.store.access.heap.HeapRowLocation 
3323190 instances of class org.apache.derby.iapi.store.raw.PageKey 
31521 instances of class org.apache.derby.impl.store.raw.data.StoredRecordHeader
...

I am trying to get a stack traceback of where some of these are allocated, but 
there is definitely a leak in Derby, probably in the implementation of the 
SYSCS_IMPORT_TABLE somewhere.


-----Original Message-----
From: Rick Hillegas [mailto:[email protected]] 
Sent: Tuesday, August 16, 2011 9:20 AM
To: [email protected]
Subject: Re: Question on unloading in an embedded environment

On 8/16/11 5:56 AM, Bergquist, Brett wrote:
> I am writing a database copy utility that is built upon the dblook utility 
> and using the SYSCS_UTIL.SYSCS_EXPORT_TABLE  and 
> SYSCS_UTIL.SYSCS_IMPORT_TABLE procedures and I have this mostly working.  
> When running this on a large database (110Gb) I am getting an OutOfMemory 
> exception.  I have the utility setup to use up to 8192Mb of memory so 
> somewhere there is a problem.  I am running this again with the 
> -XX:+HeapDumpOnOutOfMemoryError switch to see if I can get a picture on where 
> it is leaking but it will take about 6 hours to get to this point.
>
> In the mean time, assuming the error is not in my utility, I would like to 
> potentially shutdown the database and restart it to try to work around the 
> OOME.  I am running the database engine in embedded mode and see the 
> documentation to shutdown the database, but I also see the following in the 
> Derby 10.8 Reference manual page 293:
>
> "With the embedded driver, if your application shuts down Derby or calls the
> DriverManager.unload method, and you then want to reload the driver, call the
> Class.forName().newInstance() method to do so:"
>
> When I look at the Javadoc for the DriverManager class, I do not find an 
> "unload" method.  So what is this documentation referring to?
Hi Brett,

That looks like an error in the documentation. I believe it is supposed 
to refer to DriverManager.deregisterDriver(). I have logged 
https://issues.apache.org/jira/browse/DERBY-5384 to track this.

Thanks for finding this bug,
-Rick
> Thanks
>
> Brett
>
>
>
>
>



Reply via email to