Se hai bisogno di scoprire le perdite puoi usare profiler come yourkit
o jprofiler
che è in grado di monitorare le perdite di socket/jdbc.
Per correggere le perdite devi scoprire i punti in cui apri le connessioni e utilizzare try-with-resources che farà tutto close()
roba per te
try (Connection conection = DriverManager.getConnection(url);
PreparedStatement statement = createPreparedStatement(conection);
ResultSet resultSet = statement.executeQuery()) {
// process the resultSet here, all resources will be cleaned up
}