tomcat应该会在stop的时候关闭。不过其实关系也不太大。tomcat都停了,数据库连接自然断开。

解决方案 »

  1.   

    自己写的连接池最终无非还是
    con = DriverManager.getConnection(URL, user, password);那这样和直接调用jdbc连接而不关闭数据库还有什区别?
      

  2.   

    如果直接调用jdbc连接,就不能控制连接的数量,用连接池可以控制
      

  3.   

    所谓链接池,就是建立一些数据库连接后,放到“池”中。当有程序获取数据库连接的时候XXXX.getConnection(),从“池”中分配一个数据库连接出去,但是必须在使用完毕后,归还这个数据库连接,这样才能保持数据库的连接“有借有还”准则。数据库的链接池,主要是控制数据库的连接数量,和节约数据库连接创建和关闭的资源开销。不知道上面的一段话,对你是否有帮助。
      

  4.   

    同意以上看法,连接池在服务器停机时会被释放不过再多说一些看法——服务器停止,JVM也停止,java程序占用的内存资源肯定被释放。
    但数据库连接自动释放实际上是由 DBMS 完成的。
    楼主所担心的内存泄漏实际上是担心数据库不能及时清理已经废弃的连接,而这种担心是不必要的。
    因为DBMS必须有能力处理因为程序异常退出、网络连接中断……很多诸如此类的异常连接中断情形。当然,如果楼主够执着,要想在服务器停机之前清理这些连接也并非不可能
    你可以对JVM使用java HOOK,在JVM关机前回调自定义的清理过程
    在一些内存数据库系统中,为了能够持久化数据,这是必用的手段