javazhujf
2008-11-20 13:46
浏览 187
已采纳

关于java读取文件或连接数据库的资源问题

Java操作文件的时候,是创建相应的对象,利用这个对象来打开和关闭文件。

我想知道当打开文件后只消耗JVM的资源吗(创建的java对象),

还是同时也消耗操作系统的资源,如果JVM突然down掉资源能被释放吗



还有同样,java利用连接DB的时候,

那么DB端会产生相应的连接对象,

这时候JVM突然down掉,那么DB端并不知道,这个连接对象也不会被释放,

那么只有等到超时才能被释放吧
问题补充

lifethinker 写道
对于文件资源,当然耗操作系统资源,并且由操作系统来管理,当JVM突然崩溃,操作系统会回收这个进程的所有资源,当然也包括文件资源。



对于DB Connection,JVM突然崩溃,DB Server是有办法知道的,最起码它知道Socket连接断开了,数据库连接依赖于它。我测试过Oracle和MySQL的连接,对Oracle的连接,如果不调用Connection.close()方法,即使Socket连接断开了(比如JVM退出),服务器端是不会关闭数据库连接的,但是它设置有超时时间。对MySQL的连接,一旦Socket连接断开,服务器端就会自动关闭数据库连接。





sdh5724 写道
大学学过操作系统了么?


你能告诉和操作系统的哪部分相关吗,我去补课!





非常感谢你的回答,从你那学到了google搜不到的东西。



  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • iteye_10624 2008-11-20 13:46
    已采纳

    对于文件资源,当然耗操作系统资源,并且由操作系统来管理,当JVM突然崩溃,操作系统会回收这个进程的所有资源,当然也包括文件资源。

    对于DB Connection,JVM突然崩溃,DB Server是有办法知道的,最起码它知道Socket连接断开了,数据库连接依赖于它。我测试过Oracle和MySQL的连接,对Oracle的连接,如果不调用Connection.close()方法,即使Socket连接断开了(比如JVM退出),服务器端是不会关闭数据库连接的,但是它设置有超时时间。对MySQL的连接,一旦Socket连接断开,服务器端就会自动关闭数据库连接。

    [quote="sdh5724"]大学学过操作系统了么?[/quote]
    你能告诉和操作系统的哪部分相关吗,我去补课!

    点赞 打赏 评论
  • 不良校长 2008-11-20 13:46

    大学学过操作系统了么?

    点赞 打赏 评论
  • javazhujf01 2008-11-20 13:46

    [quote="sdh5724"]大学学过操作系统了么?[/quote]

    你的回答没啥意义,如果你是高手你可以教别人。

    点赞 打赏 评论
  • xuming9 2008-11-20 13:46

    [quote="lifethinker"]对于文件资源,当然耗操作系统资源,并且由操作系统来管理,当JVM突然崩溃,操作系统会回收这个进程的所有资源,当然也包括文件资源。

    对于DB Connection,JVM突然崩溃,DB Server是有办法知道的,最起码它知道Socket连接断开了,数据库连接依赖于它。我测试过Oracle和MySQL的连接,对Oracle的连接,如果不调用Connection.close()方法,即使Socket连接断开了(比如JVM退出),服务器端是不会关闭数据库连接的,但是它设置有超时时间。对MySQL的连接,一旦Socket连接断开,服务器端就会自动关闭数据库连接。

    [quote="sdh5724"]大学学过操作系统了么?[/quote]
    你能告诉和操作系统的哪部分相关吗,我去补课!
    [/quote]

    哪部分?我也去补课

    点赞 打赏 评论
  • javazhujf01 2008-11-20 13:46

    [quote="lifethinker"]对于文件资源,当然耗操作系统资源,并且由操作系统来管理,当JVM突然崩溃,操作系统会回收这个进程的所有资源,当然也包括文件资源。

    对于DB Connection,JVM突然崩溃,DB Server是有办法知道的,最起码它知道Socket连接断开了,数据库连接依赖于它。我测试过Oracle和MySQL的连接,对Oracle的连接,如果不调用Connection.close()方法,即使Socket连接断开了(比如JVM退出),服务器端是不会关闭数据库连接的,但是它设置有超时时间。对MySQL的连接,一旦Socket连接断开,服务器端就会自动关闭数据库连接。

    [quote="sdh5724"]大学学过操作系统了么?[/quote]
    你能告诉和操作系统的哪部分相关吗,我去补课!
    [/quote]

    看了你的讲解学到了不少,本来想投你一票不小心点错了,还不能修改^^

    点赞 打赏 评论