它是Object中的一个方法,子类重写它,垃圾回收时此方法会被调用,可以在其中进行一些资源释放和清理工作,但将资源释放和清理放在finalize方法中非常不友好,非常影响性能,严重时甚至会引起OOM,从java9开始就被标注为@Deprecated,不建议被使用。

为什么finalize方法非常不好,非常影响性能?

1. 非常不好

  1. FinalizerThread是守护线程,代码很有可能没来得及执行完,线程就结束了,造成资源没有正确释放。
  2. 异常会被吞掉,不能判断有没有在释放资源时发生错误。

2. 影响性能

  1. 重写了finalize方法的对象在第一次被GC时,并不能及时释放它占用的内存,因为要等着FinalizerThread调用完finalize,把它从第一个unfinalized队列移除后,第二次GC时才能真正释放内存。
  2. GC本就因为内存不足引起,finalize调用又很慢(两个队列的移除操作,都是串行执行的,用来释放连接类的资源应该也不快),不能及时释放内存,对象释放不及时就会逐渐移入老年代,老年代垃圾积累过多就会容易Full GC,Full GC释放速度如果仍跟不上创建新对象的速度,就会OOM。

3. 问题 

有的文章提到【Finalizer线程会和我们的主线程进行竞争,不过由于它的优先级较低,获取到的CPU时间较少,因此它永远也赶不上主线程的步伐】,这个显然是错误的,FinalizerThread的优先级较普通线程高,赶不上步伐的原因应该是finalize执行慢等原因导致的。

对finalize的理解相关推荐

  1. Java中final、finally、finalize的理解

    导航栏 一.基本理解 1.final的基础理解 2.finally的基础理解 3.finalize的基础理解 二.final使用案例 1.final对于变量的定义 1.在定义的时候初始化. 2.fin ...

  2. finalize()的真正用法及作用

    Java面试中经常会遇到一个问题:final.finally.finalize的区别? 今天我只谈大家回答的最不准确也误解最深的一个 -- finalize.谈finalize() 方法之前需要先了解 ...

  3. android点击事件的优先级,Android事件体系全面总结+实践分析,系列篇

    前言 在这一个月里,我利用闲余的时间看了下最近Android职业发展这块该怎么选择?这个问题各位大神的回答都非常透彻,相信对大家或多或少都在一定程度上有很大的帮助,今天在这里写这篇文章更多的是想以我开 ...

  4. JVM面试(四)-垃圾回收、垃圾收集器、GC日志

    垃圾回收.垃圾收集器.GC日志 什么是垃圾?(垃圾的概念) 什么是垃圾回收?(垃圾回收的概念) 为什么要垃圾回收?(垃圾回收的原因) 如何定义垃圾? 引用计数算法 什么是循环引用 可达性分析算法 哪些 ...

  5. 2021年GitHub上那些优秀Android开源库总结,全套教学资料

    开头 今天在浏览技术新闻的时候,发现腾讯就在今天开源了一套 Android 原生的 UI 框架.你们有没有发现,腾讯特别喜欢干这种事,哪一种事呢?喜欢开源 UI 框架,小程序也是这样的. 我看到这个新 ...

  6. 安卓音视频开发!Android开发还会吃香吗?大厂直通车!

    导语 又到了面试季,自己也不得不参与到这场战役中来,其实是从去年底就开始看,Android的好机会确实不太多,但也还好,3年+的android开发经历还是有一些面试机会的,不过确实不像几年前门槛那么低 ...

  7. 【求职】完美世界Java 方向面经

    完美世界 Java 方向面经 第一篇 **一面 2016-9-16 ** 1.谈一谈 TreeMap 2.HashMap 实现 3.IO 哪个类可以 Byte 转 String 4.说下 IO 模型 ...

  8. JavaSE_day09【抽象类、多态、根父类】

    JavaSE_day09[抽象类.多态.根父类] 今日内容 抽象类 多态 向上转型 向下转型 native 根父类 学习目标 能够声明抽象类 能够说出抽象类的特点 能够继承抽象类 能够应用多态解决问题 ...

  9. 如何快速的开发一个完整的直播app,附答案

    前言 程序员说不焦虑其实是假的,因为无论是现在还是最近几年,很早就有人察觉Android开发的野蛮生长时代已经过去.过去的优势是市场需要,这个技术少有人有,所以在抢占市场的时候,基本上满足需要就已经可 ...

最新文章

  1. 主机配置_分享几套电脑主机配置
  2. 轻量型「孟子」模型比肩千亿大模型!AI大牛周明率队刷新CLUE新纪录
  3. “人工智能”浪潮退去,“AI四小龙”怎么了?
  4. MySQL学习笔记(5)之数据定义类型
  5. vue+webpack热替换
  6. [Aaronyang] 写给自己的WPF4.5 笔记6[三巴掌-大数据加载与WPF4.5 验证体系详解 2/3]
  7. [云炬ThinkPython阅读笔记]2.7 注释
  8. shiro的登录 subject.login(token)中执行逻辑和流程
  9. SQL计算100以内的质数(可以把100换成任意的整数)
  10. 掼蛋游戏WEB版——PHP后台实现源码
  11. CDOJ 1401 谭爷的黑暗沙拉 数学
  12. linux 环境下的进程间的通信——消息队列传输结构体
  13. VMware vSphere 性能优化设计经验+优化方法 | 周末送资料
  14. Android 使用ViewPager实现画廊Gallery效果
  15. Android P环境 bootchart使用
  16. Java代理和动态代理机制分析和应用
  17. 计算机科学箴言集 -- 编程珠玑续
  18. [Game Engine]开源游戏框架(转至wiki)
  19. Whitelabel Error Page(2)之Internal Server Error
  20. 两电脑使用网线连接传文件方法

热门文章

  1. 网关服务Kong和konga介绍安装使用教程
  2. 微博解析:微博揭晓年度百大视频号!视频号规模超50万的背后透露着什么讯息?
  3. 微服务架构集成RabbitMQ给用户推送消息(发送短信,发送邮件,发送站内信息)
  4. 基于任务复制的异构集群并行程序的执行
  5. bim综合软件:一次性快速解锁所有轴网,生成轴网
  6. echart 柱状图 ---- 坐标轴、网格、柱体配置
  7. 利用python画梯形图案例
  8. 微信小程序如何使用解析 nbsp; lt; gt; amp; apos; ensp; emsp;等字符?
  9. 国外问卷调查一个月能有多大的收益呢?20w+吗?
  10. PrettyZoo V1.8.0 发布了, 一款值的收藏的 Zookeeper 图形化工具