Java中对象的三种状态
来源:互联网 发布:安卓节拍器软件 编辑:程序博客网 时间:2024/05/03 01:01
Java中的对象的三种状态是和垃圾回收紧密相关的,因此有必要深究。
状态一:可触及态:从根节点开始,可以搜索到这个对象,也就是可以访问到这个对象,也有人将其称为可达状态。
状态二:可复活态:从根节点开始,无论如何都不能访问到这个对象,也就是说这个对象的所有引用都被释放,没有任何变量引用该对象了,
但是该对象有可能在finalize()方法中再次被引用,从而复活。
状态三:不可触及态:对象的所有引用都被释放了,并且在对象的finalize()方法中没有复活,这样的话该对象就是不可触及状态。
对于状态三我再解释下,所有对象都有finalize()方法,并且该方法只会被执行一次,并且它的执行时间是随机的,一般在我们为变量赋值为null后,
会执行,如果我们在某个对象的finalize()方法中为他增加了引用,那么该对象会复活,但是当我们再次为其赋值为null时,finalize()方法不会被执行了,
因为该方法知执行一次,该对象也就变成了不可触及态。
说到finalize()方法,我再多说点,有的书上写,可以在finalize()方法中释放某些资源,其实这并不被我们所推荐,主要有两点:
1、finalize()方法执行的时间不确定,那么这就会导致资源还没来得及释放,又有一个线程需要访问资源,可能会产生异常错误。尤其是在多线程程序中。
2、finalize()方法中可能会发生引用外泄,无意中复活对象,从而产能生内存泄漏。
推荐在try-catch-finally结构的finally块中释放资源。
1 0
- Java中对象的三种状态
- Hibernate中Java对象的三种状态
- hibernate中java对象的三种状态
- hibernate 中java对象的三种状态
- 3.Hibernate中java对象的三种状态
- Hibernate中Java对象的三种状态及其转换
- Hibernate中对象的三种状态
- Hibernate中对象的三种状态
- hibernate中对象的三种状态
- Hibernate中对象的三种状态
- Hibernate中对象的三种状态
- Hibernate中 对象 的三种状态
- hibernate中对象的三种状态
- Hibernate中对象的三种状态
- Hibernate中对象的三种状态
- Hibernate中对象的三种状态
- Hibernate中Java对象的三种状态以及之间的转换 ----Hibernate_4
- 对象的三种状态
- TimesTen 数据库复制学习:8. 管理Active Standby Pair(带缓存组)
- javaScript学习基础篇(4)-(window,正则,eventListener)
- Hankerrank World CodeSprint #4 Gridland Provinces (字符串双hash )
- TestNg参数化测试之读取csv文件
- leetcode 罗马数字与整数的转换算法
- Java中对象的三种状态
- android中的Intent和intent filter
- socket.io 中namespace 和 room的概念。
- [git]如何删除在远程已被删除的本地分支(清理本地分支)
- javaweb学习总结(十五)——JSP基础语法
- 关于IIS7.5下的web.config配置的一些问题
- 007——javamail带附件发送邮件
- RxJava入门
- Java高并发(一)-- 秒杀