对finalize的理解
它是Object中的一个方法,子类重写它,垃圾回收时此方法会被调用,可以在其中进行一些资源释放和清理工作,但将资源释放和清理放在finalize方法中非常不友好,非常影响性能,严重时甚至会引起OOM,从java9开始就被标注为@Deprecated,不建议被使用。
为什么finalize方法非常不好,非常影响性能?
1. 非常不好
- FinalizerThread是守护线程,代码很有可能没来得及执行完,线程就结束了,造成资源没有正确释放。
- 异常会被吞掉,不能判断有没有在释放资源时发生错误。
2. 影响性能
- 重写了finalize方法的对象在第一次被GC时,并不能及时释放它占用的内存,因为要等着FinalizerThread调用完finalize,把它从第一个unfinalized队列移除后,第二次GC时才能真正释放内存。
- GC本就因为内存不足引起,finalize调用又很慢(两个队列的移除操作,都是串行执行的,用来释放连接类的资源应该也不快),不能及时释放内存,对象释放不及时就会逐渐移入老年代,老年代垃圾积累过多就会容易Full GC,Full GC释放速度如果仍跟不上创建新对象的速度,就会OOM。
3. 问题
有的文章提到【Finalizer线程会和我们的主线程进行竞争,不过由于它的优先级较低,获取到的CPU时间较少,因此它永远也赶不上主线程的步伐】,这个显然是错误的,FinalizerThread的优先级较普通线程高,赶不上步伐的原因应该是finalize执行慢等原因导致的。
对finalize的理解相关推荐
- Java中final、finally、finalize的理解
导航栏 一.基本理解 1.final的基础理解 2.finally的基础理解 3.finalize的基础理解 二.final使用案例 1.final对于变量的定义 1.在定义的时候初始化. 2.fin ...
- finalize()的真正用法及作用
Java面试中经常会遇到一个问题:final.finally.finalize的区别? 今天我只谈大家回答的最不准确也误解最深的一个 -- finalize.谈finalize() 方法之前需要先了解 ...
- android点击事件的优先级,Android事件体系全面总结+实践分析,系列篇
前言 在这一个月里,我利用闲余的时间看了下最近Android职业发展这块该怎么选择?这个问题各位大神的回答都非常透彻,相信对大家或多或少都在一定程度上有很大的帮助,今天在这里写这篇文章更多的是想以我开 ...
- JVM面试(四)-垃圾回收、垃圾收集器、GC日志
垃圾回收.垃圾收集器.GC日志 什么是垃圾?(垃圾的概念) 什么是垃圾回收?(垃圾回收的概念) 为什么要垃圾回收?(垃圾回收的原因) 如何定义垃圾? 引用计数算法 什么是循环引用 可达性分析算法 哪些 ...
- 2021年GitHub上那些优秀Android开源库总结,全套教学资料
开头 今天在浏览技术新闻的时候,发现腾讯就在今天开源了一套 Android 原生的 UI 框架.你们有没有发现,腾讯特别喜欢干这种事,哪一种事呢?喜欢开源 UI 框架,小程序也是这样的. 我看到这个新 ...
- 安卓音视频开发!Android开发还会吃香吗?大厂直通车!
导语 又到了面试季,自己也不得不参与到这场战役中来,其实是从去年底就开始看,Android的好机会确实不太多,但也还好,3年+的android开发经历还是有一些面试机会的,不过确实不像几年前门槛那么低 ...
- 【求职】完美世界Java 方向面经
完美世界 Java 方向面经 第一篇 **一面 2016-9-16 ** 1.谈一谈 TreeMap 2.HashMap 实现 3.IO 哪个类可以 Byte 转 String 4.说下 IO 模型 ...
- JavaSE_day09【抽象类、多态、根父类】
JavaSE_day09[抽象类.多态.根父类] 今日内容 抽象类 多态 向上转型 向下转型 native 根父类 学习目标 能够声明抽象类 能够说出抽象类的特点 能够继承抽象类 能够应用多态解决问题 ...
- 如何快速的开发一个完整的直播app,附答案
前言 程序员说不焦虑其实是假的,因为无论是现在还是最近几年,很早就有人察觉Android开发的野蛮生长时代已经过去.过去的优势是市场需要,这个技术少有人有,所以在抢占市场的时候,基本上满足需要就已经可 ...
最新文章
- 主机配置_分享几套电脑主机配置
- 轻量型「孟子」模型比肩千亿大模型!AI大牛周明率队刷新CLUE新纪录
- “人工智能”浪潮退去,“AI四小龙”怎么了?
- MySQL学习笔记(5)之数据定义类型
- vue+webpack热替换
- [Aaronyang] 写给自己的WPF4.5 笔记6[三巴掌-大数据加载与WPF4.5 验证体系详解 2/3]
- [云炬ThinkPython阅读笔记]2.7 注释
- shiro的登录 subject.login(token)中执行逻辑和流程
- SQL计算100以内的质数(可以把100换成任意的整数)
- 掼蛋游戏WEB版——PHP后台实现源码
- CDOJ 1401 谭爷的黑暗沙拉 数学
- linux 环境下的进程间的通信——消息队列传输结构体
- VMware vSphere 性能优化设计经验+优化方法 | 周末送资料
- Android 使用ViewPager实现画廊Gallery效果
- Android P环境 bootchart使用
- Java代理和动态代理机制分析和应用
- 计算机科学箴言集 -- 编程珠玑续
- [Game Engine]开源游戏框架(转至wiki)
- Whitelabel Error Page(2)之Internal Server Error
- 两电脑使用网线连接传文件方法
热门文章
- 网关服务Kong和konga介绍安装使用教程
- 微博解析:微博揭晓年度百大视频号!视频号规模超50万的背后透露着什么讯息?
- 微服务架构集成RabbitMQ给用户推送消息(发送短信,发送邮件,发送站内信息)
- 基于任务复制的异构集群并行程序的执行
- bim综合软件:一次性快速解锁所有轴网,生成轴网
- echart 柱状图 ---- 坐标轴、网格、柱体配置
- 利用python画梯形图案例
- 微信小程序如何使用解析 nbsp; lt; gt; amp; apos; ensp; emsp;等字符?
- 国外问卷调查一个月能有多大的收益呢?20w+吗?
- PrettyZoo V1.8.0 发布了, 一款值的收藏的 Zookeeper 图形化工具