Java 对象的生命周期
Java对象的生命周期
在Java中,对象的生命周期包括以下几个阶段:
- 创建阶段(Created)
- 应用阶段(In Use)
- 不可见阶段(Invisible)
- 不可达阶段(Unreachable)
- 收集阶段(Collected)
- 终结阶段(Finalized)
- 对象空间重分配阶段(De-allocated)
1.创建阶段(Created)
在创建阶段系统通过下面的几个步骤来完成对象的创建过程
- l 为对象分配存储空间
- l 开始构造对象
- l 从超类到子类对static成员进行初始化
- l 超类成员变量按顺序初始化,递归调用超类的构造方法
- l 子类成员变量按顺序初始化,子类构造方法调用
一旦对象被创建,并被分派给某些变量赋值,这个对象的状态就切换到了应用阶段
2.应用阶段(In Use)
对象至少被一个强引用持有着。
3.不可见阶段(Invisible)
当一个对象处于不可见阶段时,说明程序本身不再持有该对象的任何强引用,虽然该这些引用仍然是存在着的。
简单说就是程序的执行已经超出了该对象的作用域了。
举例如下图:本地变量count在25行时已经超出了其作用域,则在此时称之为count处于不可视阶段。当然这种情况编译器在编译的过程中会直接报错了。
4.不可达阶段(Unreachable)
对象处于不可达阶段是指该对象不再被任何强引用所持有。
与“不可见阶段”相比,“不可见阶段”是指程序不再持有该对象的任何强引用,这种情况下,该对象仍可能被JVM等系统下的某些已装载的静态变量或线程或JNI等强引用持有着,这些特殊的强引用被称为”GC root”。存在着这些GC root会导致对象的内存泄露情况,无法被回收。
5.收集阶段(Collected)
当垃圾回收器发现该对象已经处于“不可达阶段”并且垃圾回收器已经对该对象的内存空间重新分配做好准备时,则对象进入了“收集阶段”。如果该对象已经重写了finalize()方法,则会去执行该方法的终端操作。
这里要特别说明一下:不要重载finazlie()方法!原因有两点:
l 会影响JVM的对象分配与回收速度
在分配该对象时,JVM需要在垃圾回收器上注册该对象,以便在回收时能够执行该重载方法;在该方法的执行时需要消耗CPU时间且在执行完该方法后才会重新执行回收操作,即至少需要垃圾回收器对该对象执行两次GC。l 可能造成该对象的再次“复活”
在finalize()方法中,如果有其它的强引用再次持有该对象,则会导致对象的状态由“收集阶段”又重新变为“应用阶段”。这个已经破坏了Java对象的生命周期进程,且“复活”的对象不利用后续的代码管理。
6.终结阶段
当对象执行完finalize()方法后仍然处于不可达状态时,则该对象进入终结阶段。在该阶段是等待垃圾回收器对该对象空间进行回收。
7.对象空间重新分配阶段
垃圾回收器对该对象的所占用的内存空间进行回收或者再分配了,则该对象彻底消失了,称之为“对象空间重新分配阶段”。
相关文章:

ThinkPad -- Intel 无线网卡网络连接方法限制及无法用 Fn + F5 控制的问题
[url]http://www-900.ibm.com/cn/support/tscdoc/html/JLII-6R6E5C.HTML[/url]文章编号:JLII-6R6E5CThinkPad -- Intel 无线网卡网络连接方法限制及无法用 Fn F5 控制的问题适用机型:所有ThinkPad R50; 所有ThinkPad R50e; 所有ThinkPad R50p; 所有ThinkPad R51; 所有ThinkPad…

TreeSet集合(自然排序和比较器排序)
TreeSet集合自然排序和比较器排序 当指执行插入排序、希尔排序、归并排序等算法时,比较两个对象“大小”的比较操作。我们很容易理解整型的 i>j 这样的比较方式,但当我们对多个对象进行排序时,如何比较两个对象的“大小”呢࿱…

java字节流
一 字节流 1.1字节输出流OutputStream OutputStream是一个抽象类,操作的数据都是字节。 输出流中定义都是写write方法,如下图: 1.1.1 FileOutputStream类 OutputStream有很多子类,其中子类FileOutputStream可用来写入数据到文件。FileOutput…

MySQL:讨人喜欢的 MySQL replace into 用法(insert into 的增强版)
讨人喜欢的 MySQL replace into 用法(insert into 的增强版) 在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在; 2. 如果不存在,则插入;3.如果存在,则更新。 在 …

读农民工兄弟学C#文章后的感觉
呵呵,这些文章让原本枯燥的技术文章变得简单,通俗,易懂此类文章是编程入门新手必读的好文章,当然高手可以看一下这些文章的语言风格,等日后自己出书时,可以参考之!哈哈,哪天我也出一本属于自己的技术书^_^好可惜的是自己离"高手"还有那么一段路要走!当然喽,我不是高手…
36晋级12第五场:冯志刚决胜入围(节目视频)
视频地址:[url]http://win.cn.yahoo.com/070613/16/mn53.html[/url]比赛时间:2007年4月17日 选手:王阳、冯志刚、刘恩霞、王嵩 评委: 熊晓鸽:IDG创业投资基金 创始合伙人 马云:阿里巴巴集团董事局主席及雅虎…

顯示密碼安全性強度
<div class"from-nav"><div class"Mtitle"><span>密码:</span></div><div class"Mright"><input name"password"type"password"id"password"size"20"class&quo…

HashMap集合遍历的五种方式
文章目录创建HashMap集合,添加数据一、第一种foreach遍历二、第二种foreach遍历三、第一种迭代器遍历 效率高(建议使用)四、第二种迭代器遍历 效率低(不建议使用)五、JDK8新特性,通过lambda遍历Map创建Hash…

JAVA核心技术I---JAVA基础知识(查漏补缺private,static)
一:private对于类和对象(同C) private是只有这个类内部可以访问(类的成员函数和定义初始化) private是类之间的限制,而不是对对象的限制《重点》 同类对象是可以直接访问对象的私有成员 class priTest{priv…

『TensorFlow』命令行参数解析
argparse很强大,但是我们未必需要使用这么繁杂的东西,TensorFlow自己封装了一个简化版本的解析方式,实际上是对argparse的封装 脚本化调用tensorflow的标准范式: import pprint import tensorflow as tfflags tf.app.flags# 脚本…

IIS重起批处理
将以下代码保存到一个BAT文件中,执行后便可释放所有被锁定的组件。执行顺序是:停止WWW服务-〉停止组件保护-〉开启组件保护-〉开启WWW服务。net stop w3svc /…

RenderTree渲染树
RenderTree渲染树对类中的静态成员有很重要的关系,这个和多态是有很重要的关系,举个简单的例子,在游戏中,马里奥需要渲染,蘑菇也需要渲染,怪兽也需要渲染,其是串在一个树上的,但是不…

JAVA IO流复制文件夹及里面的所有文件
public static void main(String[] args) throws Exception {//复制到哪个路径(path)中String path "E:\\main";File file new File("F:\\main");copyAll(file, path);}public static void copy(File file, String path) throws E…

python RSA 加密与签名
PyCrypto装起来就简单多了,我是直接 sudo easy_install pycrypto 直接搞定的先生成rsa的公私钥:打开控制台,输入 openssl 再输入 genrsa -out private.pem 1024 来生成私钥接着输入 rsa -in private.pem -pubout -out public.pem 来生成公钥$…

深度解析VC中的消息(上)
消息是指什么?消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉。一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向Windows发出一个通知,告诉应用程序某个事情发生了。例如…

漫谈C#之关键字(1)
每一种语言都有非常多的关键字,而且这些关键字也都大同小异,不过毕竟还是有些许的不一样。有些关键字大家碰到的多了,自然就熟悉了,但是有些关键字用得不大多,或者是新引入的,所以就不大熟悉了。我平常在用…

Python-CSS整理
CSS层叠样式表 1.格式 h1 {name:abc,color:red}; 选择器-属性-值 2.ID和类选择 #ID .类 3.CSS引用方式 link文件-外部样式表 script style-内部样式表 标签 style-内联样式 4.background背景 ~background ~-color 背景颜色 ~-repeat 是否重复 ~-pos…

利用 socket 获取 tcp 包并解析的问题。
服务器端代码如下:(Java Servlet 实现) protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { OutputStream out response.getOutputStream(); try { …

Mysql排序后显示排序序号
网上找的一个比较齐全的解释案例,拿来记录一下 ① : 与 的区别 : 赋值的意思。在set update select 中表示赋值的意思,用的比较少一般都用,但是在用变量实现行号时(比如本文标题获取排列序号),一定要用:…

解决Visual Studio For Mac Restore失败的问题
之前就了解到微软出了mac版的VS,没太多的关注,自己也就是使用 DotNet Core SDK VS Code 做一些小demo。 前两天发布了DotNet Core 2.0 ,Visual Studio For Mac 7.1 之后,感觉可以装起来用用,把win下面的项目转到Core上…

应用Etherchannel扩展企业服务的高可用性
什么是Etherchannel?Etherchannel可以说是Cisco特有的技术,也就是我们在交换机以及路由器上所要配置Etherchannel就不得不使用CISCO设备。在实际工程中一般用于出口与上层设备的连接。实际上通过Etherchannel的中文名-端口绑定就很容易理解,它…

Leetcode 391.完美矩形
完美矩形 我们有 N 个与坐标轴对齐的矩形, 其中 N > 0, 判断它们是否能精确地覆盖一个矩形区域。 每个矩形用左下角的点和右上角的点的坐标来表示。例如, 一个单位正方形可以表示为 [1,1,2,2]。 ( 左下角的点的坐标为 (1, 1) 以及右上角的点的坐标为 (2, 2) )。…

Meteor计时器
Meteor有提供它自己的setTimeout和setInterval方法。这些方法被用于确保所有全局变量都具有正确的值。它们就像普通 JavaScript 中的setTimeout 和 setInterval 一样工作。Timeout - 超时 Meteor.setTimeout 的例子。Meteor.setTimeout(function(){console.log("Timeout c…

WEB程序代码优化入手的几方面
这里对web程序方面的优化作一个总结.1.编码规范化可读性优化编码规范我想一般程序员不会不了解,如果你这方面是空白你应该好好补补基础了,做到编码规范是一个好的程序员的最基础要求,一个团队也应该有自己的编码规范。所以程序的优化也应该包…

【Elastic Stack(一)】Elastic Stack简介
如果你没有听说过Elastic Stack,那你一定听说过ELK。实际上ELK是三款软件的简称,分别是Elasticsearch、Logstash、Kibana组成,在发展的过程中,又有新成员Beats的加入,所以就形成了Elastic Stack。 所以说,…

c#创建、保存excel正常执行要点补疑
网上搜索C#实现excel操作的示例太多了,但不知道有多少是经过验证确实可行才发布出来的,也是因为开发需要,我找了一些代码却发现大多都不能正确执行完毕,于是决定补充自己在实践中遇到的要点以供参考。如下示例:usingMi…

动态更新 AGS Cache
作者:Flyingis 提升ArcGIS Server访问速度最佳的方式是Cache,将所有图层切片保存在服务器,客户端请求时直接访问cache好的图片,这里分为两种情况,一是所有图层都做cache,二是部分图层做cache࿰…

SVN状态图标不显示的两种解决办法
文章目录第一种方法第二种方法首先情况如下:这样看不到状态是不是就很难受 本博主最近也是第一次使用SVN做版本控制 然后就出现了这样的情况后来经过查询才知道SVN刚下载安装后 设置什么的都是默认的 需要手动设置一下就OK啦 第一种方法 我们先在桌面或者资源管理…

SPOJ ATOMS - Atoms in the Lab
题目链接:http://www.spoj.com/problems/ATOMS/ 题目大意:有N个原子,他们每秒分裂成K个新原子,新原子也能继续分裂。问如果要控制他的数量为M以内,应在什么时候使其停止分裂。其实时间为0. 解题思路:可以发…

hive lock命令的使用
1.hive锁表命令 hive> lock table t1 exclusive;锁表后不能对表进行操作2.hive表解锁: hive> unlock table t1;3.查看被锁的表 1.hive> show locks; 转载于:https://www.cnblogs.com/liyanbin/p/10237482.html