I work in ActiveMQ Artemis, and we have a series of tests that will use derby memory, with the uri as "jdbc:derby:memory:testName;create=true"
So, every test will have its own database, and we do that for isolating the tests. at the end of the test, we call destroy and shutdown of derby with: try { DriverManager.getConnection("jdbc:derby:memory:test;destroy=true"); } catch (Exception ignored) { // it always throws an exception on shutdown } try { DriverManager.getConnection("jdbc:derby:;destroy=true;shutdown=true;destroy=true"); } catch (Exception e) { So, no matter how hard I try, there is always a memory leak from DataStore being held at a HashMap, from VFMemoryStorageFactory:tables I presume. Or there is a "leaked" list (a reference of a reference somewhere). I recently developed a framework / library to test and find for memory leaks, and I have this reproduced here: https://github.com/clebertsuconic/check-leak/blob/derby-test/examples/junit-example/src/test/java/io/github/checkleak/junitexample/DerbyLeakTest.java So, either I'm supposed to do something else in order to Derby to remove the hashmap, or there's an actual leak. So, I need to either identify what I'm doing wrong... or if this is an actual issue, I need help to build derby and debug the issue further. I tried building with: ant buildjars mvn -f maven2/pom.xml install ( I need to consume derby in Maven, so I can test it in my process). I wasn't sure this would be appropriate for the user's list as it might be an actual bug that I need help with how to develop a fix. ******************************************************************************************************************************* References to obj[4]=TOSTRING(org.apache.derby.impl.io.vfmem.DataStore@4dbad37), class=org.apache.derby.impl.io.vfmem.DataStore !-- FieldReference name='value'::=java.lang.Object java.util.HashMap$Node.value on object TOSTRING(/Users/clebertsuconic/work/apache/check-leak/examples/junit-example/test4=org.apache.derby.impl.io.vfmem.DataStore@4dbad37), class=java.util.HashMap$Node !--!-- arrayRef [Ljava.util.HashMap$Node;[5] id=@1883788127 !--!--!-- FieldReference name='table'::=transient java.util.HashMap$Node[] java.util.HashMap.table on object OBJ(java.util.HashMap@1492156162) !--!--!--!-- StaticFieldReference public static final int org.apache.derby.io.StorageFactory.VERSION_NUMBER !-- arrayRef [Ljava.lang.Object;[4] id=@987950392 !--!-- Reference inside a method - io.github.checkleak.core.CheckLeak::exploreObjectReferences !--!-- Reference inside a method - io.github.checkleak.core.CheckLeak::exploreObjectReferences -- Clebert Suconic