[ http://issues.apache.org/jira/browse/DERBY-23?page=all ]
Knut Anders Hatlen resolved DERBY-23.
-------------------------------------
Resolution: Fixed
I'm marking this issue as resolved.
The reason why I haven't resolved it before, is that I still see
OutOfMemoryError on some platforms. These errors are caused by the background
threads running with a lower priority than the the main thread, and therefore
many of the background threads don't get enough CPU time to shut down. If the
main thread takes a break now and then, I don't see OutOfMemoryError on any
platform. That is,
while (true) {
Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
DriverManager.getConnection("jdbc:derby:;shutdown=true");
Thread.sleep(1);
}
runs reliably with no memory leak on all platforms I have tested. I don't want
to add a regression test for this issue, since I fear it will be timing
dependent and might cause noise in the nightly testing.
I think the issue can be closed because the remaining problem is unlikely to be
seen in a real-world application (who will spend all their CPU time on loading
and unloading the driver?). If it turns out to be a problem, I see these
possible solutions:
1) On shutdown, wait for all background threads to terminate.
2) On shutdown, raise the priority of the background threads.
If someone feels this should be addressed, please open a new issue.
> just booting jdbc driver and shutting down seem to leak memory
> --------------------------------------------------------------
>
> Key: DERBY-23
> URL: http://issues.apache.org/jira/browse/DERBY-23
> Project: Derby
> Issue Type: Bug
> Components: Services
> Affects Versions: 10.0.2.0
> Reporter: Tulika Agrawal
> Assigned To: Knut Anders Hatlen
> Priority: Minor
> Fix For: 10.2.1.0
>
> Attachments: DERBY-23-npe.diff, DERBY-23-npe.stat,
> DERBY-23-with_comments.diff, DERBY-23.diff, DERBY-23.stat, derbyall_report.txt
>
>
> Reporting for Daniel John Debrunner.
> Doing simple boot and shutdown of the driver in a loop
> seem to grow the heap forever:
> new org.apache.derby.jdbc.EmbeddedDriver(); //boot the driver
> DriverManager.getConnection("jdbc:derby:;shutdown=true");
> //shutdown the cloudscape instance completely
> after booting and shutting down 1516 times, memory used is
> ~~41931056 bytes.
> Sample GC Output:
> 1931.93: [Full GC 43484K->43243K(65088K), 0.1779751 secs]
> 1933.13: [Full GC 43511K->43270K(65088K), 0.1914383 secs]
> 1934.47: [Full GC 43538K->43297K(65088K), 0.1808878 secs]
> 1935.68: [Full GC 43564K->43324K(65088K), 0.4461623 secs]
> 1937.43: [Full GC 43591K->43350K(65088K), 0.1842980 secs]
> 1938.63: [Full GC 43617K->43377K(65088K), 0.1873431 secs]
> 1939.85: [Full GC 43644K->43404K(65088K), 0.1948505 secs]
> 1941.07: [Full GC 43671K->43430K(65088K), 0.1790895 secs]
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira