博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对象的生命周期
阅读量:5789 次
发布时间:2019-06-18

本文共 655 字,大约阅读时间需要 2 分钟。

  1. 创建阶段(Created) 为对象分配存储空间 开始构造对象 从父类到子类对static成员进行初始化 父类成员变量按照顺序初始化,递归调用父类的构造方法 子类成员变量按照顺序初始化,子类构造方法调用 一旦对象被创建,并有某个引用指向它,这个对象的状态就切换到了应用阶段(In Use)

  2. 应用阶段(In Use) 对象至少被一个强引用持有并且对象在作用域内

  3. 不可见阶段(Invisible) 程序本身不再持有该对象的任何强引用,但是这些引用可能还存在着; 一般具体是指程序的执行已经超过该对象的作用域了

  4. 不可达阶段(Unreachable) 该对象不再被任何强引用所持有; 可能仍被JVM等系统下的某些已经装载的或者线程或JNI所持有,这些特殊的强引用被称为GC root,这种情况容易导致内存泄露,无法被回收

  5. 收集阶段(Collected) 对象不可达,并且GC已经准备好对该对象占用的内存空间重新分配的时候,处于收集阶段。 如果重写了finazlie()方法,则会去执行该方法。

尽量不要重写finazlie()方法,因为有可能影响JVM的对象分配与回收速度或者可能造成该对象的再次复活

  1. 终结阶段 当对象执行完finalize()方法之后,仍然处于不可达状态时,则该对象进入终结阶段。在这个阶段,内存空间等待GC进行回收

  2. 对象空间的重新分配 GC对该对象占有的内存空间进行回收或者再分配,该对象彻底消失

转载于:https://juejin.im/post/5c0a1ce1f265da6157054b31

你可能感兴趣的文章
shell变量子串
查看>>
iOS的主要框架介绍 (转载)
查看>>
react报错this.setState is not a function
查看>>
poj 1183
查看>>
从根本解决跨域(nginx部署解决方案)
查看>>
javascript实现的一个信息提示的小功能/
查看>>
Centos7.x:开机启动服务的配置和管理
查看>>
HTML5 浏览器返回按钮/手机返回按钮事件监听
查看>>
xss
查看>>
iOS:百度长语音识别具体的封装:识别、播放、进度刷新
查看>>
JS获取服务器时间并且计算距离当前指定时间差的函数
查看>>
华为硬件工程师笔试题
查看>>
jquery居中窗口-页面加载直接居中
查看>>
cd及目录快速切换
查看>>
Unity Shaders and Effects Cookbook (3-5) 金属软高光
查看>>
31-hadoop-hbase-mapreduce操作hbase
查看>>
C++ 代码风格准则:POD
查看>>
linux-友好显示文件大小
查看>>
【转】【WPF】WPF中MeasureOverride ArrangeOverride 的理解
查看>>
【转】二叉树的非递归遍历
查看>>