JDK的原生资源类不关闭,它也不会永远存在。JVM会借助finalize自动关闭它,例如FileInputStream
//FileInputStream.java - JDK8
//jdk8的FileInputStream重写了finalize,保证对象回收前开启的资源被关闭
protected void finalize () throws IOException {
if (guard != null) {
guard.warnIfOpen();
}
if ((fd != null) && (fd != FileDescriptor.in)) {
close();
}
}
在JDK9后,用Cleaner机制代替了finalize机制;Cleaner机制自动回收的对象同样需要实现AutoCloseable接口;Cleaner是基于PhantomReference实现的;对实现细节感兴趣的同学,可自行查阅下相关文档
但是使用JDK的提供的资源关闭机制的,那么资源的关闭比手动关闭时要延后很长时间的。据测试,使用try-with-resources关闭资源,并让垃圾回收器回收它的时间在12纳秒。而使用finalizer机制,时间增加到550纳秒
不及时关闭资源,就会占用资源,影响其他线程的执行;比如linux的文件资源,linux进程默认能打开的最大文件数是1024(有的是2048,此数值是可配置的);如果一个线程持有十几个文件资源,还要等550纳秒用finalizer机制释放资源,同进程的其他线程都等到花谢了

资源不关闭,会导致什么最坏的结果相关推荐

  1. 连环清洁工之特殊任务--java资源如何关闭?

    小C是一名特殊的黑客,他专门为黑客提供服务,扫除黑客攻击的痕迹,避免被查到为何人攻击. 今天他正兴致勃勃的玩游戏<连环清洁工>,连环清洁工是由iFun4all S.A.制作发行的一款犯罪题 ...

  2. java spring 服务器关闭连接_java springboot websocket 服务 服务器主动关闭连接 导致 抛出java.io.EOFException异常...

    遇到这个问题不要慌,去查查众说纷纭.那我就在这里总结一下吧 存在此问题的有以下几种情况 1.ws连接不稳定经常断线: 答: 1)可能是客户和服务器之间的网络问题 2)可能是服务端内存不够用导致线程被异 ...

  3. redis快照关闭了导致不能持久化的问题

    在使用redis的时候我们经常会遇到这种bug: Python与Redis交互时,设置数据出现下列报错信息: MISCONF Redis is configured to save RDB snaps ...

  4. bootstrap 多层弹框-关闭时导致外层滚动栏消失

    问题:bootstrap form 表单内弹框, 多层模态框关闭时导致最外层滚动栏消失 解决:在最外层表单中-添加 <style type="text/css">.mo ...

  5. 【vagrant虚拟机扩容】 vagrant扩容硬盘时克隆失败--未关闭虚拟机导致

    vagrant导入镜像后,空间不足. 扩容硬盘时在克隆硬盘阶段出现以下2种看不太懂的错误 PS D:\MyEnvironment\VirtualBoxVMs\cdh2> vboxmanage c ...

  6. 如何删除 AWS 资源以及关闭账户(来自亚马逊官方提供文档,记录一下方便查看)

    如果贵公司决定不再使用当前的账号,希望关停账户且不再产生任何费用,我们建议您首先在本 地做好数据备份操作,以免数据丢失给您带来不必要的麻烦. 其次,您可以按照当前使用的服务分类,对您账户当前存在的资源 ...

  7. inputstreamreader未关闭会导致oom_Linux内核OOM机制分析和防止进程被OOM杀死的方法...

    问题描述 Linux 内核有个机制叫 OOM killer(Out-Of-Memory killer),该机制会监控那些占用内存过大,尤其是瞬间很快消耗大量内存的进程,为了防止内存耗尽而内核会把该进程 ...

  8. inputstreamreader未关闭会导致oom_【搞定面试官】你还在用Executors来创建线程池?会有什么问题呢?

    前言 上文我们介绍了JDK中的线程池框架Executor.我们知道,只要需要创建线程的情况下,即使是在单线程模式下,我们也要尽量使用Executor.即: ExecutorService fixedT ...

  9. oracle中断进程,中断ORACLE数据库关闭进程导致错误案例

    昨晚下班的时候,我准备关闭本机的虚拟机上的ORACLE数据库后准备下班,但是由于我SecureCRT开了多个窗口,结果一不小心,疏忽之下在一个生产服务器上执行了shutdown immediate命令 ...

最新文章

  1. nginx 上传 文件超时设置_Nginx在高并发下的性能优化点!有这篇就够了!
  2. 8051 管脚定义_8051微控制器的引脚说明
  3. 【Flink】Flink No JAAS configuration section named Client ERROR:Authentication failed
  4. 对五次实验重新编写后的一些感想
  5. UNIX高级环境编程 第11、12章 线程同步及属性
  6. Linux查看CPU信息机器型号等硬件信息
  7. 在计算机系统中 cpu指什么地方,在计算机中cpu指的是什么
  8. python sleep函数什么意思_python中sleep函数用法实例分析
  9. java 百亿计算器,百万换算成亿(百万换算成亿计算器)
  10. 机器人编程语言有哪些? 这5大编程语言的优缺点你都了解?
  11. 【算法】动态规划之计算二项式系数(C++源码)
  12. mysql查缺补漏(一) and or优先级和多表join
  13. DELPHI 线程类
  14. 支付宝SDK下载页面
  15. NOIP模拟测试19
  16. 【stm32】手把手用cubemx配置血氧传感器(MAX30102)
  17. 什么是__name__== “__main__“
  18. Latex 插入jpg,eps图片
  19. 希腊字母拼写与读音中英对照一览表 暨 希腊键盘键位对照表
  20. 【DW网页设计制作】超简单的动漫主题网页制作教程——HTML+CSS海贼王作品展示网页

热门文章

  1. 11个顶级 JavaScript 日历插件
  2. MySQL中查询时间最大的一条记录
  3. 类内的函数共享给对象使用
  4. 10.27 afternoon similated match
  5. [Java多线程]-J.U.C.atomic包下的AtomicInteger,AtomicLong等类的源码解析
  6. 北京地铁线路图纯算法附带求极权值(原创) 性能提升版
  7. apache站点优化——长连接
  8. springboot 压测 50并发 线程等待_Spring Boot中三款内嵌容器的使用
  9. lc滤波电路电感电容值选择_这几种常见的无源滤波电路,你都了解吗 ?
  10. php is_post,PHP发送get、post请求的6种方法简明总结