Du har mycket troligt en anslutningsläcka. En gigantisk poolstorlek hjälper inte riktigt med det. Se här .
Bilaga:Robust Resource Cleanup idiom
Det är bäst när du kan använda prova med resurser
. Men om du arbetar med en äldre version av Java (före Java 7), eller med resurser som inte implementerar AutoCloseable
du kanske fortfarande måste återgå till den här typen av saker.
Connection c = null;
OtherResource or = null;
try
{
c = cpds.getConnection();
or = getOtherResource()
// do stuff
// ...
}
finally
{
try { if (or != null) or.close(); }
catch (Exception e) { e.printStackTrace(); }
try { if (c != null) c.close(); }
catch (Exception e) { e.printStackTrace(); }
}
Observera att finally-satsen definitivt kommer att köras om anslutningen förvärvas, och det finns en best-attempt close() för varje resurs:If or
misslyckas med att stänga(), kommer det undantaget inte att förhindra försöket att stänga() anslutningen.
Man måste vara väldigt försiktig. Som Keynes berömt uttryckte det, det finns många glipor mellan koppen och läppen.