java-引用

java 引用分为 WeakReference 
WeakReference<Car> weakCar = new WeakReference(Car)(car);
weakCar.get();


当一个对象不对强引用是 WeakReference就会被GC回收。 而sofeReference当内存不足时且未被强引用被回收


强引用: 对象的使用;


  幻象引用(phantom reference)
幻象引用于弱引用和软引用均不同。它控制其指向的对象非常弱(tenuous),以至于它不能获得这个对象。get()方法通常情况下返回的是null值。它唯一的作用就是跟踪列队在ReferenceQuene中的已经死去的对象。
幻象引用和弱引用的不同在于其入队(enquene)进入ReferenceQuene的方式。当弱引用的对象成为若可到达时,弱引用即列队进入ReferenceQuene。这个入队发生在终结(finialize)和垃圾回收实际发生之前。理论上,通过不正规(unorthodox)的finilize()方法,成为垃圾的对象能重新复活(resurrected),但是弱引用仍然是死的。幻象引用只有当对象在物理上从内存中移出时,才会入队。这就阻止我们重新恢复将死的对象。
W:终结(Finalization)指比拉圾回收更一般的概念,可以回收对象所占有的任意资源,比如文件描述符和图形上下文等。
幻象引用由两个好处:
A:它能确定某一个对象从内存中移除的时间,这也是唯一的方式。通常情况下,这不是非常有用。但是迟早(come in handy)会用到手动处理大图片的情况:如果你确定一张图片需要被垃圾回收,那么在你尝试加载下一张照片前,你应该等待这张照片被回收完成。这样就使得令人恐惧的(dreaded)内存溢出不太可能发生。
B:虚幻引用能够避终结(finilize)的基本问题。finilize()方法能够通过给一个垃圾对象关联一个强引用使之复活。问题是覆写了finilize()方法的对象在成为垃圾之前,为了回收,垃圾回收期需要执行两次单独的循环。第一轮循环确定某个对象是垃圾,那么它就符合终结finilize的条件。在finilize的过程中,这个对象可能被“复活”。在这个对象被实际移除之前,垃圾回收期不得不重新运行一遍。因为finilization并不是实时调用的,所以在终止进行的过程中,可能发生了gc的多次循环。在实际清理垃圾对象时,这导致了一些延时滞后。这将导致Heap中有大量的垃圾导致内存溢出。
幻象引用不可能发生以上的情况,当幻象引用入队时,它实际上已经被移除了内存。幻象内存无法“复活”对象。这发现这个对象时虚幻可到达时,在第一轮循环中,它就被回收。
可以证明,finilize()方法从不在第一种情况下使用,但是虚幻引用提供了一种更安全和有效的使用和被排除掉的finilize方法的机制,使得垃圾回收更加简单。但是因为有太多的东西需要实现,我通常不适用finilize。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
weixin-java-cp是一个用于企业微信开发的Java SDK。根据引用[1],weixin-java-cp有以下几个文件提供: 1. weixin-java-cp-2.8.0.jar:这是SDK的jar包。 2. weixin-java-cp-2.8.0-javadoc.jar:这是SDK的API文档的jar包。 3. weixin-java-cp-2.8.0-sources.jar:这是SDK的源代码的jar包。 4. weixin-java-cp-2.8.0.pom:这是SDK的Maven依赖信息文件。 根据引用引用,weixin-java-cp还有一个基于Spring Boot和WxJava实现的微信企业号企业微信放置演示项目称为weixin-java-cp-demo。这个项目是一个企业微信替代开发功能的演示程序。该项目使用了Spring Boot框架,并且使用了weixin-java-cp这个SDK。 在使用weixin-java-cp时,首先需要配置项目。根据引用中的描述,你需要复制/src/main/resources/application.yml.template文件并将其扩展名修改为application.yml。然后根据自己的需要填充相关配置信息。配置文件中包含了一些主要配置说明,需要根据实际情况进行填写。其中,如果要配置通讯录agentId的应用,可以随便配置一个agentId,只要保证和服务器URL地址中的一致即可。 总之,weixin-java-cp是一个用于企业微信开发的Java SDK,它提供了jar包、API文档、源代码和Maven依赖信息文件。同时,还有一个基于Spring Boot和WxJava实现的微信企业号企业微信放置演示项目weixin-java-cp-demo。在使用weixin-java-cp时,需要配置相关信息,可以参考引用中的说明。 : 赠送jar包:weixin-java-cp-2.8.0.jar; 赠送原API文档:weixin-java-cp-2.8.0-javadoc.jar; 赠送源代码:weixin-java-cp-2.8.0-sources.jar; 赠送Maven依赖信息文件:weixin-java-cp-2.8.0.pom; : @[TOC](<font color=#a5c>) 🐱‍🏍 weixin-java-cp-demo:基于Spring Boot和WxJava实现的微信企业号企业微信放置演示 。 : ✨企业微信WxJava的Demo演示程序介绍 本项目为,基于Spring Boot ,实现企业微信替代开发功能。 更多信息请查阅: : 使用步骤: 请注意,本演示为简化代码编译时加入了lombok支持,如果不了解lombok的话,请先学习下相关知识,可以比如阅读; 另外,新手遇到问题,请首先阅读主页的常见问题部分,可以少走很多弯路,节省大量时间。 配置:复制/src/main/resources/application.yml.template修改其扩展名生成application.yml文件,根据自己需要填充相关配置(需要注意的是:yml文件内部的属性冒号后面的文字之前需要加空格,可参考已有配置,否则属性会设置不成功); 主要配置说明如下:(注意:如果是要配置通讯录agentId的应用, agentId可以随便配置一个,保证跟下面服务器URL地址里的一致即可。) wechat: cp: corpId: 111 (企业ID 在此页面查看:https://work.weixin.qq.com/wework_admin/frame#profile) appConfigs: ✨ 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值