Java中对象的三种状态

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

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

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

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

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

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

 

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

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

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

 

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

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

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

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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/327986.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML5(笔记)

什么是HTML Hyper Text Markup Language(超文本标记语言) 超文本包括:文字,图片,音频,视频,动画等 w3c标准 WOrld Wide Web Consortium(万维网联盟) 成立于1994年,Web技术领域最权威和具影响力的国际中…

训练测试数据大小不一致_三步学会训练狗狗不随地大小便

训练狗狗在规定的地点大小便是非常重要的训练,它决定了你的屋子和院子能否干净整洁。如果是室内训练,我要先告诉你一些相关的训练禁忌。首先,当狗狗在家里排便之后才对狗狗做出惩罚,是最普遍的一个训练错误,这只会使问…

使用实体框架、Dapper和Chain的仓储模式实现策略

关键要点: Dapper这类微ORM(Micro-ORM)虽然提供了最好的性能,但也需要去做最多的工作。在无需复杂对象图时,Chain这类Fluent ORM更易于使用。对实体框架(Entity Framework)做大量的工作后&#…

JVM-对象的存活与死亡

转载自 JVM-对象的存活与死亡 当Java虚拟机进行垃圾收集的时候,那么它必须要先判断对象,是否还存活,如果存活就不能对它进行回收。所以判断一个对象是否存活是Java虚拟机必须要实现的。1.对象是否存活  1)引用计数器&#xff1…

SpringBoot+MyBatis搭建迷你小程序

简介:用Spring Boot框架大大简化了新Spring应用的初始搭建以及开发过程,在开发人员中越来越受到欢迎。微信小程序作为目前炙手可热的应用,很有可能在未来占据轻应用的市场。本门课程的主要目的是将两者结合起来,同时希望作为入门翔…

蓝桥杯JAVA省赛2013-----B------3(振兴中华)

【解析】:将格子中的字存放到一个二维数组中,使用回溯法依次进行遍历, 符合条件的1,最后求出总和 【答案】:35 从我做起振 (0, 0) (0, 1) (0, 2) (0, 3) (0, 4) 我做起振兴 (1, 0) (1, 1) (1, 2) (1, 3) (1, 4) 做起…

python变量后面加星号_Python基础找茬系列20--python函数的秘密

一、小试牛刀二、函数的定义def 函数名(参数列表): 函数体【1】函数的关键词:是def,不是del,也不是function【2】函数的名称:不能使用关键词作为函数的名称,允许使用内置函数名作为函数名称,这会覆盖内置函…

基于Quartz.net 的开源任务管理平台

最近,又重新整理,开发出了一套基于Quartz.net 的任务管理平台。将Quartz.net 的任务调度,管理等功能统一整合,形成了一套比较完整的任务调度平台。主要是:任务调度服务,后台任务管理 等功能。 github地址&a…

Java中的垃圾回收与对象生命周期

转载自 Java中的垃圾回收与对象生命周期1. 垃圾回收 垃圾回收是Java程序设计中内存管理的核心概念,JVM的内存管理机制被称为垃圾回收机制。 一个对象创建后被放置在JVM的堆内存中,当永远不再引用这个对象时,它将被JVM在堆内存中回收。…

页面复杂对象传递参数 开发中遇到的问题

左边是我发送的数据 转换成右边的就可以接受到数据了 我发送的数据接收回来 这样发送 服务器就可以接收到数据了

hibernate正向生成数据库表以及配置——hibernate.cfg.xml

<?xml version1.0 encodingUTF-8?> <!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse H…

蓝桥杯JAVA省赛2013-----B------4(黄金连分数)

【答案】&#xff1a;0.6180339887498948482045868343656381177203091798057628621354486227052604628189024497072072041893911375 识别问题 --> 斐波那契的第n项与第n1项的比值n要多少才够 --> 精度处理大整数、大浮点数 &#xff1a;add()-&#xff1a;subtract()*&…

.NET仓储模式高级用例

主要结论 如果需要执行基本CURD之外的其他操作&#xff0c;此时就有必要使用仓储&#xff08;Repository&#xff09;。为了促进测试工作并改善可靠性&#xff0c;应将仓储视作可重复使用的库&#xff08;Library&#xff09;。将安全和审计功能放入仓储中可减少Bug并简化应用程…

可视化大屏设计尺寸_可视化大屏设计_酷炫不是最高效的大屏展示的唯一标准...

目前市面上有众多做大屏的可视化BI工具&#xff0c;有的部分企业为了要实现其功能效果而令人感到枯燥乏味&#xff0c;或者是为了看上去绚丽多彩而显得极端复杂&#xff0c;从而实现对于相当复杂而又冗余数据的深入分析&#xff0c;让企业决策者难以理解数据的价值。这也导致了…

Java的GC机制及算法

转载自 Java的GC机制及算法 GC的阶段 对每个对象而言&#xff0c;垃圾回收分为两个阶段&#xff1a;finalization和reclamation。 finalization: 指运行这个对象的finalize的方法。reclamation: 回收被这个对象使用的内存。 GC的过程的基本步骤首先确认对象是不可达的&#…

19年8月 字母哥 第一章 spring boot 2.x基础及概念入门 这里全部看完了 热部署没出来 第二章在前面2页 用热点公司网不行

http://springboot.zimug.com/1233100 文档 http://www.zimug.com/page/5 字母哥个人博客 11111 第一章 spring boot 2.x基础及概念入门 1.1.spring boot 产生的背景及其优势 1.2.spring boot 2.x 新特性说明 1.3.helloworld及项目结构介绍 1.4.IDEA结合spring b…

dell 恢复介质_戴尔官方WIN10恢复介质镜像下载与安装教程 | Dell 中国

前提&#xff1a;准备一个8G以上的空U盘相关视频请点击如何制作并使用win10 USB安装镜像目录:一、制作U盘安装介质1.打开链接&#xff0c;点击"下载OS Recovery Tool"&#xff0c;2.运行下载好的 OS Recovery Tool &#xff0c;点击INSTALL&#xff0c;3.安装完成&am…

CSS3(笔记)

CSS简介 CSS是什么 Cascading Style Sheet层叠样式表 CSS&#xff1a;表现&#xff08;美化网页&#xff09; 字体&#xff0c;颜色&#xff0c;边距&#xff0c;高度&#xff0c;宽度&#xff0c;背景图片&#xff0c;网页定位&#xff0c;网页浮动 CSS怎么用&#xff08;快…

19年8月 字母哥 第三章 spring boot 配置原理实战 用热点公司网不行

第三章 spring boot 配置原理实战 3.1.结合配置加载讲解bean自动装配原理 3.2.详解YAML语法及占位符语法 3.3.获取自定义配置的两种实现方法 3.4.配置文件注入值数据校验 3.5.加载旧项目配置文件的两种方式 这节课就是适配老的项目而已所以要新建分支 因为不是很常用 3.6.profi…

.NET Core跨平台图形处理库ImageSharp

ImageSharp 是支持.NET Core跨平台图形处理库&#xff0c;ImageSharp是ImageProcessor 的.NET Core跨平台实现。 ImageSharp 支持如下操作&#xff1a; 调整大小&#xff0c;裁剪&#xff0c;翻转&#xff0c;旋转&#xff0c;边缘检测等。 支持BMP&#xff0c;PNG&#xff0c;…