当前位置: 首页 > news >正文 做视频网站视频文件都存放在哪做一个小公司网站多少钱 news 2025/11/4 3:07:51 做视频网站视频文件都存放在哪,做一个小公司网站多少钱,无需注册网站模板下载,造价人才网概叙 在JDK9中新增了Cleaner类#xff0c;该类的作用是用于替代finalize方法#xff0c;更有效地释放资源并避免内存泄漏。 在JEP260提案中#xff0c;封装了大部分Sun包内部的API之余#xff0c;还引入了一些新的API#xff0c;其中就包含着Cleaner这个工具类。Cleaner承…概叙 在JDK9中新增了Cleaner类该类的作用是用于替代finalize方法更有效地释放资源并避免内存泄漏。 在JEP260提案中封装了大部分Sun包内部的API之余还引入了一些新的API其中就包含着Cleaner这个工具类。Cleaner承担着替换finalize方法的作用为了解决finalize方法的性能问题、安全问题以及不可靠。 在JDK1.2中就已经有Cleaner这个类的内部实现了不过是在sun包中实现的。由于是内部类不建议在生产代码中直接使用。不过sun包下的Cleaner类和lang包下的Cleanr类的功能是类似的。 在Java中Cleaner是java.lang.ref.Cleaner类的一个实例它用于在垃圾收集器确定对象不再可达时执行清理动作。通常这在处理本地资源如文件句柄或数据库连接时非常有用确保资源在对象不再使用时能够得到释放。 使用Cleaner的典型场景是结合使用java.lang.ref.PhantomReference和java.lang.ref.ReferenceQueue。你可以创建一个PhantomReference到你想要跟踪的对象并在创建时指定一个ReferenceQueue和一个Cleaner。当PhantomReference被入队时Cleaner会执行一个清理方法你可以在这个方法中释放资源。 Cleaner类 注意在JDK1.9以上版本可使用 在Java程序中提供有GC的垃圾回收机制如果发现堆内存不足时一定要进行垃圾回收以释放内存空间但如果某些对象在回收前需要做一些处理可以通过覆写Object类中的finalize()方法来实现这种回收前的处理。 finalize()方法的定义 Deprecated(since9) protected void finalize() throws Throwable { }finalize()方法实际上从JDK1.0时就开始提供但一直到JDK1.9后才发现此方法成为了不推荐使用的方法同时这个方法上所抛出的一个Throwabke类型的异常Erroe和Exception在对象回收时可能会出现各种问题但不影响回收 public class Member {public Member() {System.out.println(诞生);}Overrideprotected void finalize() throws Throwable { //可能抛错误也可能抛异常System.out.println(回收);throw new Exception(我真的还想在活500年);} }public class Demo {public static void main(String[] args) {Member memnew Member(); //实例化对象memnull; //垃圾不被引用System.gc();//手动进行gc操作System.out.println(太阳照常升起一代更比一代强);} }执行结果诞生 太阳照常升起一代更比一代强 回收回收对象前要先finalize()降低了内存回收的效率而且它不能保证被及时执行或者可能造成该对象的在次复活。 jdk1.9后出现新的替代者java.lang.ref.Cleaner类。此种清理方式会启动一个新的清理线程并且基于AutoCloseable接口实现资源释放。 Cleaner 类的主要方法和属性 Cleaner类中一共就三个外部方法一个简单的工具类。 其中在调用create方法时就会新建一条线程用于监听目标对象是否已经被回收。监听的逻辑则是用到了虚引用以及引用队列在虚引用中要是一个对象变成不可达后在GC前会将该对象的虚引用放入引用队列中。详细的步骤以及逻辑可以看这篇文章【Java引用规范】虚引用以及引用队列。 如何创建和使用 Cleaner 对象 使用Cleaner.create()创建Cleaner对象。调用cleaner.register()方法传入监听的对象以及回收后要执行的逻辑。其中逻辑中不能带有监听对象的引用否则对象将永远无法被回收。 Cleaner 优点和局限性 Cleaner 类相比 Finalizer 和 PhantomReference 的优势 Cleaner 类和手动调用Close方法的区别 Cleaner 类的潜在问题和限制 每注册一个Cleaner类就会新开一条线程用于监听目标对象是否已经进入到引用队列。直到目标对象被回收后新线程才结束。Cleaner回收时间点无法控制。不能替换所有的资源释放必要时还是需要显式执行Close方法。无法控制传入的回收执行逻辑可能导致性能问题。 应用场景 在JDK1.2中就已经有这个类的内部实现了不过是在sun包中实现的。由于是内部类不建议在生产代码中直接使用。不过sun包下的Cleaner类和lang包下的Cleanr类的功能是类似的。 Cleaner在JDK中最典型的实现就是堆外内存的回收。我们申请到一个堆外内存后是无法手动将该堆外内存进行显示的回收的只能等待JVM来自动回收该内存。 其中自动回收的操作就是使用到了Cleaner工具类在DirectByteBuffer的构造方法中申请到堆外内存后就会将堆外内存地址、申请容量以及实际内存大小传入到Deallocator类中进行空间的回收。 Deallocator类集成了Runnable接口在run方法中就会将对应地址的堆外内存回收。 示例1传统的对象回收 li不进行手动回收 class Book{//无参构造public Book(){System.out.println(【构造】用心编写了一本优秀的原创技术图书);}Overrideprotected void finalize() throws Throwable {System.out.println(【析构】图书使用完毕可以销毁);} } public class Application {public static void main(String[] args) {Book book new Book();//创建实例化对象book null;//断开堆内存的指向变为垃圾空间} }运行结果【构造】用心编写了一本优秀的原创技术图书调用gc()进行手动回收 如果不进行手动的gc()回收则需要等待自动回收自动回收的时间是不可控的 class Book{//无参构造public Book(){System.out.println(【构造】用心编写了一本优秀的原创技术图书);}Overrideprotected void finalize() throws Throwable {System.out.println(【析构】图书使用完毕可以销毁);} } public class Application {public static void main(String[] args) {Book book new Book();//创建实例化对象book null;//断开堆内存的指向变为垃圾空间//如果不进行手动的gc()回收则需要等待自动回收自动回收的时间是不可控的System.gc();//进行垃圾回收} }运行结果如下【构造】用心编写了一本优秀的原创技术图书 【析构】图书使用完毕可以销毁 手动抛出异常 finalize()方法代码修改如下其他代码不变 protected void finalize() throws Throwable {System.out.println(【析构】图书使用完毕可以销毁);throw new Exception(这本图书还有用不能销毁);//手动抛出异常}运行结果如下【构造】用心编写了一本优秀的原创技术图书 【析构】图书使用完毕可以销毁 以上的这种程序做法是在JDK1.9以前提供的处理形式但这样的做法一直以来都存在严重问题。 如果在finalize()里面出现一些线程的死锁操作那么就可能会造成垃圾回收的失败同时也会产生严重的线程阻塞问题 解决方法在JDK1.9之后启动了一个专属的回收线程----Cleaner类 示例2cleanable.clean();//释放时进行垃圾清除 import sun.misc.Cleaner; class Book implements Runnable{ //设计一个回收线程//无参构造public Book(){System.out.println(【构造】用心编写了一本优秀的原创技术图书);}public void read(){System.out.println(【读书】认真学习);}Overridepublic void run() { //真正的回收由线程来完成System.out.println(【析构】图书使用完毕可以销毁);} } class BookCleaner implements AutoCloseable{ //必须实现AutoCloseable接口private static final Cleaner cleaner Cleaner.create();//创建一个回收对象private Cleaner.Cleanable cleanable;public BookCleaner(Book book){this.cleanable cleaner.register(this,book);//注册一个回收线程}Overridepublic void close() throws Exception {this.cleanable.clean();//释放时进行垃圾清除} } public class Application {public static void main(String[] args) {Book book new Book();try(BookCleaner bc new BookCleaner()){book.read();//可以在中间进行一些对象的处理操作}catch (Exception e){}} }运行结果如下【构造】用心编写了一本优秀的原创技术图书 【读书】认真学习 【析构】图书使用完毕可以销毁 package cn.mldn.demo; import java.lang.ref.Cleaner; class Member implements Runnable {public Member() {System.out.println(诞生);}Overridepublic void run() { // 清除线程System.out.println(回收);} } class MemberCleaning implements AutoCloseable { // 实现清除的处理private static final Cleaner cleaner Cleaner.create() ; // 创建一个清除处理private Cleaner.Cleanable cleanable ;public MemberCleaning(Member member) { // 注册待清除对象this.cleanable cleaner.register(this, member) ; // 注册使用的对象}Overridepublic void close() throws Exception {// 自动关闭并释放this.cleanable.clean(); // 启动清理线程} } public class JavaAPIDemo {public static void main(String[] args) throws Exception {Member mem new Member() ;// 实例化对象System.gc(); // 手工进行GC调用try (MemberCleaning mc new MemberCleaning(mem)){/ 中间可以执行一些相关的代码} catch (Exception e) {}System.out.println(太阳照常升起地球照样转动一代更比一代强);// 不受影响继续执行} }执行结果诞生 太阳照常升起一代更比一代强 回收新版本要求启动一个线程单独清除回收防止延迟处理保证性能但是也不能保证垃圾被及时回收。最好的方式是用完即使用try-with-resource机制显示释放或者放入资源池重用。 图解-java对象的生命周期 经过以上的分析基本已经清楚对象的创建以及回收处理的操作以下是对Java中对象的生命周期流程 创建阶段每当使用关键字new就表示要开辟新的堆内存空间同时每一个新的对象实例化时都需要去执行类中的构造方法构造方法的目的是为了类中成员属性的初始化应用阶段利用指定的对象名称可以直接进行类之中的方法的调用处理不可见阶段如果现实某一个方法内部有一个对象则该方法执行完毕后该对象将不再使用不可达阶段某一块堆内存已经不再有任何的栈内存所指向那么这块空间将成为垃圾空间收集阶段JVM会自动的进行此块垃圾空间的标记标记之后将准备通过GC回收释放JDK1.8及以前的版本均使用finalize()方法JKD1.9及以后的版本推荐使用CLeaner来完成释放阶段JVM重新回收垃圾的堆内存空间供后续新对象使用 文章转载自: http://www.morning.mmqng.cn.gov.cn.mmqng.cn http://www.morning.wnmdt.cn.gov.cn.wnmdt.cn http://www.morning.yrflh.cn.gov.cn.yrflh.cn http://www.morning.wbhzr.cn.gov.cn.wbhzr.cn http://www.morning.kxrhj.cn.gov.cn.kxrhj.cn http://www.morning.pqkyx.cn.gov.cn.pqkyx.cn http://www.morning.wcyr.cn.gov.cn.wcyr.cn http://www.morning.kscwt.cn.gov.cn.kscwt.cn http://www.morning.qfgxk.cn.gov.cn.qfgxk.cn http://www.morning.qyxwy.cn.gov.cn.qyxwy.cn http://www.morning.zdqsc.cn.gov.cn.zdqsc.cn http://www.morning.pbmg.cn.gov.cn.pbmg.cn http://www.morning.brrxz.cn.gov.cn.brrxz.cn http://www.morning.hrkth.cn.gov.cn.hrkth.cn http://www.morning.jnhhc.cn.gov.cn.jnhhc.cn http://www.morning.btnmj.cn.gov.cn.btnmj.cn http://www.morning.rblqk.cn.gov.cn.rblqk.cn http://www.morning.zqbrw.cn.gov.cn.zqbrw.cn http://www.morning.jqpyq.cn.gov.cn.jqpyq.cn http://www.morning.yxnfd.cn.gov.cn.yxnfd.cn http://www.morning.ryfpx.cn.gov.cn.ryfpx.cn http://www.morning.xrpwk.cn.gov.cn.xrpwk.cn http://www.morning.xkzr.cn.gov.cn.xkzr.cn http://www.morning.shuangxizhongxin.cn.gov.cn.shuangxizhongxin.cn http://www.morning.bygyd.cn.gov.cn.bygyd.cn http://www.morning.xinxianzhi005.com.gov.cn.xinxianzhi005.com http://www.morning.snxbf.cn.gov.cn.snxbf.cn http://www.morning.yxlpj.cn.gov.cn.yxlpj.cn http://www.morning.drndl.cn.gov.cn.drndl.cn http://www.morning.sbpt.cn.gov.cn.sbpt.cn http://www.morning.xscpq.cn.gov.cn.xscpq.cn http://www.morning.bgnkl.cn.gov.cn.bgnkl.cn http://www.morning.fhghy.cn.gov.cn.fhghy.cn http://www.morning.ymtbr.cn.gov.cn.ymtbr.cn http://www.morning.sfnjr.cn.gov.cn.sfnjr.cn http://www.morning.mpwgs.cn.gov.cn.mpwgs.cn http://www.morning.nktgj.cn.gov.cn.nktgj.cn http://www.morning.gftnx.cn.gov.cn.gftnx.cn http://www.morning.frpb.cn.gov.cn.frpb.cn http://www.morning.cyjjp.cn.gov.cn.cyjjp.cn http://www.morning.rlxnc.cn.gov.cn.rlxnc.cn http://www.morning.prjns.cn.gov.cn.prjns.cn http://www.morning.qshxh.cn.gov.cn.qshxh.cn http://www.morning.rqmqr.cn.gov.cn.rqmqr.cn http://www.morning.lpskm.cn.gov.cn.lpskm.cn http://www.morning.kwrzg.cn.gov.cn.kwrzg.cn http://www.morning.cwrpd.cn.gov.cn.cwrpd.cn http://www.morning.sgjw.cn.gov.cn.sgjw.cn http://www.morning.twwts.com.gov.cn.twwts.com http://www.morning.xhfky.cn.gov.cn.xhfky.cn http://www.morning.mprtj.cn.gov.cn.mprtj.cn http://www.morning.mrlkr.cn.gov.cn.mrlkr.cn http://www.morning.pbtrx.cn.gov.cn.pbtrx.cn http://www.morning.sjjtz.cn.gov.cn.sjjtz.cn http://www.morning.mpngp.cn.gov.cn.mpngp.cn http://www.morning.nlkjq.cn.gov.cn.nlkjq.cn http://www.morning.dpruuode.cn.gov.cn.dpruuode.cn http://www.morning.hphqy.cn.gov.cn.hphqy.cn http://www.morning.rsfp.cn.gov.cn.rsfp.cn http://www.morning.txgjx.cn.gov.cn.txgjx.cn http://www.morning.qjghx.cn.gov.cn.qjghx.cn http://www.morning.rycd.cn.gov.cn.rycd.cn http://www.morning.mqgqf.cn.gov.cn.mqgqf.cn http://www.morning.tckxl.cn.gov.cn.tckxl.cn http://www.morning.zstbc.cn.gov.cn.zstbc.cn http://www.morning.lqzhj.cn.gov.cn.lqzhj.cn http://www.morning.yrhsg.cn.gov.cn.yrhsg.cn http://www.morning.qpqwb.cn.gov.cn.qpqwb.cn http://www.morning.sxmbk.cn.gov.cn.sxmbk.cn http://www.morning.cywf.cn.gov.cn.cywf.cn http://www.morning.ydxx123.cn.gov.cn.ydxx123.cn http://www.morning.mqwnz.cn.gov.cn.mqwnz.cn http://www.morning.tfpbm.cn.gov.cn.tfpbm.cn http://www.morning.mjzcp.cn.gov.cn.mjzcp.cn http://www.morning.tlbhq.cn.gov.cn.tlbhq.cn http://www.morning.tqbyw.cn.gov.cn.tqbyw.cn http://www.morning.nrqnj.cn.gov.cn.nrqnj.cn http://www.morning.hcbky.cn.gov.cn.hcbky.cn http://www.morning.mqldj.cn.gov.cn.mqldj.cn http://www.morning.hytfz.cn.gov.cn.hytfz.cn 查看全文 http://www.tj-hxxt.cn/news/275453.html 相关文章: 开源程序做网站任务手机百度网页版登录入口 单位写材料素材网站ddns做网站 山西网站制作公司做设计用到的网站 建立企业网站的技能运用vs2010c 做网站 网站搜索优化公司免费个人简历模板在线编辑 永康住房城乡建设局网站广告平面设计师 网站建设的步骤目标规划学校网站首页设计图片 旅游网站设计与制作课程设计城乡村建设规划许可证网站 网站里的个人中心下拉列表怎么做wordpress媒体库显示 厦门做网站公司泰安市违法建设网站 宁波高端建站做网站算新媒体运营吗 交互式网站的发展手机优化助手怎么关闭 社交网站制作免费注册邮箱 公司做网站app入什么科目php网站开发项目经验如何写 重庆微信网站建设价格物流网站素材 电子商务网站建设主要内容长春城投建设投资有限公司网站 上住房和城乡建设部网站四川建设厅网站施工员证查询 贵州网站建设hsyunsowordpress 分享到微信二维码 做金融平台网站需要多少钱住房和城乡建设部执业资格注册中心 .net网站开发优点微信小程序推广佣金 儿童玩具商城网站建设苏州公司网站制作公司 专业建站报价平面设计发展前景 深圳网站建设公司jm3q老外做中文网站 优动网站什么关键词可以搜到那种 dw做的网站不显示厦门百度竞价开户 网站开发的现实意义seo技术培训茂名 纯静态网站怎样江西网站建设公司电话 h5免费制作网站有哪些wap仿制网站教程 做哪些网站比较好网站建设分金手指排名十八 网站单页是什么意思吉安县规划建设局网站