转载自   Java中对象的三种状态

Java中的对象的三种状态是和垃圾回收紧密相关的,因此有必要深究。

状态一:可触及态:从根节点开始,可以搜索到这个对象,也就是可以访问到这个对象,也有人将其称为可达状态。

状态二:可复活态:从根节点开始,无论如何都不能访问到这个对象,也就是说这个对象的所有引用都被释放,没有任何变量引用该对象了,

但是该对象有可能在finalize()方法中再次被引用,从而复活。

状态三:不可触及态:对象的所有引用都被释放了,并且在对象的finalize()方法中没有复活,这样的话该对象就是不可触及状态。

对于状态三我再解释下,所有对象都有finalize()方法,并且该方法只会被执行一次,并且它的执行时间是随机的,一般在我们为变量赋值为null后,

会执行,如果我们在某个对象的finalize()方法中为他增加了引用,那么该对象会复活,但是当我们再次为其赋值为null时,finalize()方法不会被执行了,

因为该方法知执行一次,该对象也就变成了不可触及态。

说到finalize()方法,我再多说点,有的书上写,可以在finalize()方法中释放某些资源,其实这并不被我们所推荐,主要有两点:

1、finalize()方法执行的时间不确定,那么这就会导致资源还没来得及释放,又有一个线程需要访问资源,可能会产生异常错误。尤其是在多线程程序中。

2、finalize()方法中可能会发生引用外泄,无意中复活对象,从而产能生内存泄漏。

推荐在try-catch-finally结构的finally块中释放资源。

Java中对象的三种状态相关推荐

  1. java三态_Java中对象的三种状态

    Java中的对象的三种状态是和垃圾回收紧密相关的,因此有必要深究. 状态一:可触及态:从根节点开始,可以搜索到这个对象,也就是可以访问到这个对象,也有人将其称为可达状态. 状态二:可复活态:从根节点开 ...

  2. hibernate中对象的三种状态瞬时态,持久态,游离态区分

     1.瞬时态. hibernate中什么时候的对象为瞬时态呢,当我们new 一个对象时,还没有save时,它就是瞬时态的,当我们delete一个对象时,它也是瞬时态了,因为此时,他们在数据库中没有对应 ...

  3. 菜鸟学SSH(八)——Hibernate对象的三种状态

    前面写了几篇关于SSH的博客,但不是Struts就是Spring,Hibernate还从来没写过呢.说好是SSH的,怎么可以光写那两个,而不写Hibernate呢对吧.今天就先说说Hibernate对 ...

  4. Hibernate 对象的三种状态

    Hibernate 对象的三种状态 瞬时(transient): 由new操作符创建,且尚未与Hibernate Session关联的对象被认定为瞬时(Transient)的.瞬时(Transient ...

  5. Hibernate对象的三种状态(瞬时态,持久态,游离态)

    1.  瞬时状态 (瞬态) 当我们通过Java的新的关键字来生成一个实体对象时,这时这个实体对象就处于自由状态,如下:  客户客户=新客户("zx",27,图片); 这时客户对象就 ...

  6. 【Hibernate框架开发之五】Hibernate对象的三种状态Session常用方法

    1. Hibernate对象的三种状态:(图解如下:) 如图所示,Hibernate对象有三种状态,1.Transient  2.Persistent 3.Detached; 三种状态的区别如下: 1 ...

  7. Class java用法,java中Class的三种实例化

    1.调用Object类中的getClass()方法:import java.util.Date; public class ReflectTest3 { public static void main ...

  8. Hibernate持久化对象的三种状态深入理解

    关于OID hibernate缓存是一个map,他会根据OID作为缓存对象的key,我们的映射文件中<id>标签指定的属性值会作为OID 持久化对象的三种状态 为了方便理解,Hiberna ...

  9. Java中final的三种用法

    在java中final的三种用法: 1. final成员变量 2. final函数 3. final类 final成员变量 当你在类中定义变量时,在其前面加上final关键字,那便是说这个变量一旦被初 ...

最新文章

  1. 机器学习开发者的现代化路径:不需要从统计学微积分开始
  2. 电子网络发票应用系统网络不通_深度强化学习在典型网络系统中的应用综述
  3. python生成表格文件_python读取和生成excel文件
  4. BZOJ1798: [Ahoi2009]Seq 维护序列seq
  5. python实现栈,实现push(),pop(),top(),getMin()方法
  6. UIImageView01
  7. 不顾父母哀求,北大数学天才毕业后坚持出家:理想现实间的挣扎
  8. c++调用python接口作用是_利用Boost::Python实现C++调用python接口
  9. 正在东京、首尔开DevDays
  10. Python模拟分析演员之间亲密程度
  11. 第一次大作业总结——四则运算程序
  12. SetupFactory 许可协议设置
  13. EndNote X7如何在论文中嵌入中文定格式要求的参考文献
  14. 小米浏览器禁用java_小米手机调试总出现“INSTALL_CANCELED_BY_USER”
  15. Ubuntu 网易云音乐 Linux 官方版本下载安装
  16. 基于C语言和LPC1114开发板的嵌入式实验 SysTick实验、定时器实验、LED呼吸灯实验、蜂鸣器实验
  17. 【Python数据分析——使用matplotlib制作南丁格尔玫瑰图】
  18. wcdma码片速率_WCDMA中3.84M码片速率的由来
  19. 微信QQ等主流应用上线国产系统UOS:界面曝光
  20. 网络统考计算机应用基础ppt视频,计算机应用基础课程网络统考辅导.ppt

热门文章

  1. C++ 学习之旅(7)——指针pointer
  2. [SpringSecurity]基本原理_过滤器加载过程
  3. Factory Method(工厂方法)--对象创建型模式
  4. 补丁 检测系统_大云制造 | BCLinux For ARM64 V7.6操作系统正式发布
  5. kettle数据库操作OPTION SQL_SELECT_LIMIT=DEFAULT问题解决
  6. P4196 [CQOI2006]凸多边形 /【模板】半平面交
  7. cf1556B B. Take Your Places!
  8. P2567 [SCOI2010]幸运数字
  9. 51nod-有限背包计数问题【dp】
  10. jzoj3798-[NOIP2014模拟8.22]临洮巨人【前缀和】