javazhujf 2008-11-20 05: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 05:46
    关注

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

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部