当前位置: 首页 > news >正文

增城住房和建设局网站建设网站联盟

增城住房和建设局网站,建设网站联盟,网站开发验收规范,wordpress七本篇文章我们详细介绍Java中对象的finalization机制#xff0c;以及怎么使用finalize()方法#xff0c;将即将被回收的对象#xff0c;拉回来。1、finalization机制Java语言提供了对象终止#xff08;finalization#xff09;机制来允许开发人员提供对象被销毁之前的自定义…本篇文章我们详细介绍Java中对象的finalization机制以及怎么使用finalize()方法将即将被回收的对象拉回来。1、finalization机制Java语言提供了对象终止finalization机制来允许开发人员提供对象被销毁之前的自定义处理逻辑。当垃圾回收器发现没有引用指向一个对象即垃圾回收此对象之前总会先调用这个对象的finalize()方法。finalize() 方法允许在子类中被重写用于在对象被回收时进行资源释放。通常在这个方法中进行一些资源释放和清理的工作比如关闭文件、套接字和数据库连接等。永远不要主动调用某个对象的finalize()方法应该交给垃圾回收机制调用。理由包括下面三点在finalize()时可能会导致对象复活。finalize()方法的执行时间是没有保障的它完全由GC线程决定极端情况下若不发生GC则finalize()方法将没有执行机会。一个糟糕的finalize()会严重影响GC的性能finalize方法中有死循环等。从功能上来说finalize()方法与C中的析构函数比较相似但是Java采用的是基于垃圾回收器的自动内存管理机制所以finalize()方法在本质上不同于C中的析构函数。由于finalize()方法的存在虚拟机中的对象一般处于三种可能的状态。如果从所有的根节点都无法访问到某个对象说明对象己经不再使用了。一般来说此对象需要被回收。但事实上也并非是“非死不可”的这时候它们暂时处于“缓刑”阶段。一个无法触及的对象有可能在某一个条件下“复活”自己如果这样那么对它的回收就是不合理的为此定义虚拟机中的对象可能的三种状态。如下可触及的从根节点开始可以到达这个对象。可复活的对象的所有引用都被释放但是对象有可能在finalize()中复活。不可触及的对象的finalize()被调用并且没有复活那么就会进入不可触及状态。不可触及的对象不可能被复活因为finalize()只会被调用一次。以上3种状态中是由于finalize()方法的存在进行的区分。只有在对象不可触及时才可以被回收。具体过程判定一个对象objA是否可回收至少要经历两次标记过程①、如果对象objA到GC Roots没有引用链则进行第一次标记。②、进行筛选判断此对象是否有必要执行finalize()方法③、如果对象objA没有重写finalize()方法或者finalize()方法已经被虚拟机调用过则虚拟机视为“没有必要执行”objA被判定为不可触及的。④、如果对象objA重写了finalize()方法且还未执行过那么objA会被插入到F-Queue队列中由一个虚拟机自动创建的、低优先级的Finalizer线程触发其finalize()方法执行。⑥、finalize()方法是对象逃脱死亡的最后机会稍后GC会对F-Queue队列中的对象进行第二次标记。如果objA在finalize()方法中与引用链上的任何一个对象建立了联系那么在第二次标记时objA会被移出“即将回收”集合。之后对象会再次出现没有引用存在的情况。在这个情况下finalize方法不会被再次调用对象会直接变成不可触及的状态也就是说一个对象的finalize()方法只会被调用一次。2、代码演示finalize()使用/*** author liuchao* date 2023/3/4*/ public class Test6 {/*** 类变量属于GC Roots的一部分*/public static Test6 testObj;Overrideprotected void finalize() throws Throwable {super.finalize();System.out.println(调用当前类重写的finalize()方法);testObj this;}public static void main(String[] args) throws InterruptedException {testObj new Test6();// 主动删除引用testObj null;System.gc();System.out.println(-----------------第一次gc操作------------);// 因为Finalizer线程的优先级比较低暂停2秒以等待它Thread.sleep(2000);if (testObj null) {System.out.println(testObj is dead);} else {System.out.println(testObj is still alive);}System.out.println(-----------------第二次gc操作------------);// 主动删除引用testObj null;System.gc();// 下面代码和上面代码是一样的但是 testObj却自救失败了Thread.sleep(2000);if (testObj null) {System.out.println(testObj is dead);} else {System.out.println(testObj is still alive);}} }
http://www.hkea.cn/news/14478226/

相关文章:

  • 个人网站上线流程茶叶网站策划
  • 网站开发的人员wordpress thems
  • 服装品牌建设网站的目的建筑工程资质合作
  • 淘宝网站开发大连金州属于哪个区
  • 住房和城乡建设部网站杂志有人做几个蝎子养殖门户网站
  • 创建网站需要备案吗校史网站开发技术
  • 深圳网站设计 建设首选唐山建设集团下岗职工网站
  • 网站怎样建设qq网页版登录官网登录网站
  • 代理网站开发破解版成年猫咪版永久
  • 网站展示型广告案例解析茂名建设网站
  • 做百度快照要先有网站吗网站建设团队哪个最好
  • 贵州建站管理系统广州交通最新消息
  • 相城建设监理有限公司网站体育门户网站源码
  • dede网站地图htmlWordpress页面标签插件
  • 网站建设维护招聘要求wordpress 存档过多
  • 网站建设的主要问题自己可以开发一个app
  • 手机网站 点击打开做网站如何能让外国人看得到
  • 网站开发与维修是什么意思做官网设计好的公司
  • phpcms做企业网站授权免费的源码网站有哪些
  • 网站内容由什么组成部分电子商务网站建设完整案例教程s2sh pdf下载
  • 校园网上超市网站建设拱墅网站建设制作
  • 做电影网站侵权西安建百度网站的公司
  • 多语言外贸网站建设秦皇岛黄金海岸门票多少钱
  • 精美网站开发方案网站推广优化怎么做最好
  • 阿里云搭建网站教程门户网站建设和运行保障招标文件
  • 手机网站 微信小程序营销公司排名
  • 餐饮营销型网站案例江西 网站 建设 开发
  • 目前专业做水果的网站白山市建设局网站
  • 织梦网站怎么做伪静态页面南京英文网站制作
  • 如何进行网站运营与规划西安网络公司推荐