Najprawdopodobniej masz wyciek połączenia. Gigantyczny rozmiar basenu nie pomoże w tym. Zobacz tutaj .
Dodatek:idiom solidnego czyszczenia zasobów
Najlepiej, gdy możesz użyć wypróbuj z zasobami
. Ale jeśli pracujesz ze starszą wersją Javy (przed Java 7) lub z zasobami, które nie implementują AutoCloseable
być może będziesz musiał wrócić do tego rodzaju rzeczy.
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(); }
}
Zwróć uwagę, że klauzula finally zostanie na pewno wykonana, jeśli połączenie zostanie nabyte, a dla każdego zasobu dostępna jest najlepsza próba close():If or
nie uda się zamknąć(), ten wyjątek nie zapobiegnie próbie zamknięcia() połączenia.
Musisz być bardzo ostrożny. Jak to ujął Keynes, między filiżanką a wargą zdarza się wiele potknięć.