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

菜鸟网站做图北京搬家公司哪个好

菜鸟网站做图,北京搬家公司哪个好,ps培训班,代理网络下载1. 常用四种引用 快速记忆法#xff1a;“硬(俗称的强引用) -- 软(SoftReference) -- 弱(WeakReference) -- 虚(PhantomReference)” 此处将常说的“强引用”记忆成“硬引用”可以对应到次席的“软引用”#xff08;反义词#xff1a;硬-软#xff09;这样更容…1. 常用四种引用 快速记忆法“硬(俗称的强引用) -- 软(SoftReference) -- 弱(WeakReference) -- 虚(PhantomReference)” 此处将常说的“强引用”记忆成“硬引用”可以对应到次席的“软引用”反义词硬-软这样更容易记住 a. 强引用 平常我们代码中写到的引用类型都是强引用类型比如Object obj new Object();, Object实例就有一个强引用类型指向它在GC过程中即使发生OOM该Object实例都不会被回收。 b. 软引用 - SoftReference 定义方式SoftReference sr new SoftReference(new Object()); 一个对象的实例被一个软引用实例指向那么在GC过程中发生OOM之前该Object对象实例会被回收掉在内存充足的情况下是不会被回收的。同时可以将一个引用队列关联到该软引用上在软引用指向的对象被回收后该软引用会被加入到关联的引用队列中。我们可以通过Reference的get()方法获取到该软引用指向的对象实例。 c. 弱引用 - WeakReference 弱引用基本上同上面的软引用类似WeakReference wr new WeakReference(new Object());但是特殊点就是在它被创建后的下一次GC时候其指向的对象实例会被回收掉不管内存是不是充足反正就是活不过一次GC。JDK中的WeakHashMap就是使用到WeakReference其Key就是被包装成WeakReference。 d. 虚引用 - PhantomReference 定义方式PhantomReference pr new PhantomReference(new Object(), new ReferenceQueue())虚引用对象再被定义时必须指定一个引用队列实例。JDK文档中介绍它主要用于对象被回收前资源的释放操作替换finalize()方法。它和前面的两个软引用和弱引用不同的地方有两点 2. 验证 虚引用在对象被回收之前添加到引用队列中同时需要手动处理它指向的对象才会被回收 思路 a. 创建一个虚引用对象然后发起一次GC操作查看其指向的对象实例是否被回收 b. 通过检测它关联的引用队列取出加入的虚引用对象查看此时其指向的对象实例是否被回收 c. 调用虚引用对象的clear方法之后查看其指向的对象实例是否被回收 2.1. 代码 public class ReferenceApp1 {public static void main(String[] args) throws Exception {phantom();}/*** 验证PhantomReference* throws Exception*/private static void phantom() throws Exception {// 步骤1. 定义一个InnerPhantomRefObj对象实例InnerPhantomRefObj innerPhantomRefObj new InnerPhantomRefObj();innerPhantomRefObj.setName(InnerPhantomRefObj-1);ReferenceQueueObject referenceQueue new ReferenceQueue();// 步骤2. 定义一个虚引用对象PhantomReferenceObject phtRef new PhantomReference(innerPhantomRefObj, referenceQueue);// 移除InnerPhantomRefObj对象实例上的强引用不然后面操作不会被回收innerPhantomRefObj null;System.err.println(before gc | get PhantomReference referent phtRef.get());// 步骤3. 发起GC操作System.gc();int i 0;Reference tmp null;while(true) {System.out.println(phantom iteration i);Thread.sleep(5000);if(i 1) {// 步骤4. 从引用队列中取出虚引用对象tmp referenceQueue.poll();if(tmp ! null) {System.err.println(get PhantomReference from ReferenceQueue);}// 发起一次GC操作其实此时InnerPhantomRefObj对象不会被回收System.gc();}if(i 5) {if(tmp ! null) {System.err.println(after gc | get PhantomReference referent tmp.get());// 步骤5. 调用虚引用上的clear方法让下一次GC操作回收掉InnerPhantomRefObj对象tmp.clear();// 或者让GC操作释放PhantomReference对象实例 // tmp null; // phtRef null;System.err.println(clear PhantomReference);// 发起一次GC操作System.gc();}}if(i 10) {break;}}}Dataprivate static class InnerPhantomRefObj {private String name;} }2.2. 观察VisualVM中实例个数变化判断是否被回收 a. 从上述代码的步骤1到步骤5之间的实例统计截图如(实例个数为1没有被回收) b. 执行步骤5调用PhantomReference的clear方法之后的实例统计截图如(实例个数为0已被被回收) 在Java 8以及之前的版本中在虚引用回收后虚引用指向的对象才会回收。在Java 9以及更新的版本中虚引用不会对对象的生存产生任何影响。 3. 类比 看到一篇英文博客中用一个例子来类比软、弱、虚引用三者之间的差别非常好在此借用一下 比如一个快餐店中桌子座位有限服务员会随时清理桌子座位你进去点单找到一个座位坐下会存在下面几种情况 a. 然后后面有很多人过来点单时当座位不够时你会让出座位但在此之前每次服务员过来清理座位时你都没有让出座位这种情况就像就像软引用 b. 第一次服务员过来清理桌子座位时你就让出座位这种情况就像弱引用 c. 第一次服务员过来清理桌子座位时你可以随时准备让出座位其实这时候你并没有让出位置但是后面服务员说出一句让你让出座位时你才会让出座位这种情况就像虚引用
http://www.yutouwan.com/news/407160/

相关文章:

  • 如何制作网站连接数据库做网站月入7000
  • 郑州网站建设哪里好wordpress 快报插件
  • 网站权重怎么提高网站建设的实验的结论
  • 工程建设招标网都有哪些网站好的网站建设公司有哪些
  • 网站建设管理需要招聘什么人才国外做外贸哪个网站好些
  • 外贸网站做的作用是什么公司简介模板及介绍
  • 怎样做家普网站58首码项目网
  • 网站后台页面设计做网站都去哪申请网址
  • 如何上传文件到网站长沙软件开发工资一般多少
  • 网站标题 逗号为什么用Vue做网站的很少
  • 惠州做网站建设价格关于电子商务网站建设的参考文献
  • 论坛建站哪个比较好wordpress设置仅对会员可见
  • 静态网站被挂马做企业网站用服务器
  • 无锡外贸网站制作公司怎么创建自己的网站平台app
  • 网站开发用什么系统兰州程序开发网站建设
  • 仿网站ppt怎么做微信上的网站怎么做的吗
  • 公司做网站自己注册域名论坛推广工具
  • 熊掌号网站改造绑定织梦网站农村电商网站有哪些
  • 大连企业建设网站源码社区
  • 购买天猫店铺网站wordpress密码忘了怎么办
  • 学校网站建设开发方案书昆山网站
  • 做网站行业现状计算机二级网页制作基础
  • 网站建站的步骤东坑网站建设
  • 关于公司做网站供比价报告wordpress银行模板下载
  • 免费行情网站大全做的网站访问速度慢
  • 沈阳个人网站建设代理品牌怎么做公司内部网站
  • 阜新市项目建设网站母婴网站模板dede
  • 做网站推广电话手机app开发培训课程
  • 外贸类网站建设什么专业学网页设计
  • 网站开发ide php大连免费营销型建站网络推广