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

婚车租赁网站怎样做商城平台推广方案

婚车租赁网站怎样做,商城平台推广方案,iis网站发布默认首页,电商网页设计流程目录 一、强引用二、软引用三、弱引用四、虚引用五、总结 引文#xff1a; 在 Java 中一共存在 4 种引用#xff1a;强、软、弱、虚。它们主要指的是#xff0c;在进行垃圾回收的时候#xff0c;对于不同的引用垃圾回收的情况是不一样的。下面我们就一起来看一下这 4 种引用… 目录 一、强引用二、软引用三、弱引用四、虚引用五、总结 引文 在 Java 中一共存在 4 种引用强、软、弱、虚。它们主要指的是在进行垃圾回收的时候对于不同的引用垃圾回收的情况是不一样的。下面我们就一起来看一下这 4 种引用。 一、强引用 强引用只有所有 GC Root 对象都不通过【强引用】引用该对象该对象才能被垃圾回收。 强引用是比较常见的比如说下面这段代码种这个 user 就是强引用 User user new User();强引用的特点有哪些呢如下图所示 现在有一个 GC Root我们之前讲过 GC Root 是用来定位哪些对象是存活的。 假如说 GC Root 关联到了 User 对象那就证明这个 User 对象是存活的则这个 User 对象一直都不会被垃圾回收即使出现了内存不足抛出 OOM 异常也不会回收强引用的对象。只有当 GC Root 不再关联 User 对象那这个对象才有可能会被垃圾回收器进行回收。 以上就是强引用的特点。 二、软引用 软引用仅有软引用引用该对象时在垃圾回收后内存仍不足时会再次触发垃圾回收。 我们先来看一段代码 User user new User(); SoftReference softReference new SoftReference(user);在这段代码中我们先创建了一个 User 对象然后又创建了一个 SoftReference 对象并且包装了 User 对象。它们的关系如下图所示 首先 GC Root 能够关联到 SoftReference 对象然后当前的 SoftReference 又会关联 User 对象。大家注意SoftReference 对象和 User 对象之间的关联是使用的虚线因为这种关联属于软引用。 在进行垃圾回收的时候一开始并不会对 user 对象进行垃圾回收。由于 user 对象是一个软引用如果在第一次垃圾回收之后内存还是不够马上又进行了一次垃圾回收这个时候软引用 User 对象就会被垃圾回收器回收了。 以上就是软引用的介绍它必须配合 SoftReference 进行使用。 三、弱引用 弱引用仅有弱引用引用该对象时在垃圾回收的时候无论内存是否充足都会回收弱引用对象。 弱引用和软引用的使用有些类似我们来看这样一段代码 User user new User(); WeakReference weakReference new WeakReference(user);在这段代码中先创建了一个 User 对象然后创建了一个 WeakReference 对象并且包装了 User 对象他们的关系如下图所示 首先GC Root 关联到的是 WeakReference 对象然后由 WeakReference 对象去关联了 User 对象这里也是用虚线表示的。目前这个 User 对象就是一个弱引用。 在进行垃圾回收的时候。一旦内存不够用了User 对象作为一个弱引用对象就会被垃圾回收器回收掉。 关于弱引用有一个经典的例子就是 ThreaLocal 内存泄露的问题 在 ThreadLocal 中有一个 Entry 对象它继承了 WeakReference然后在构造函数里面调用了 super(k) 方法也就表示了当前构造函数中的 ThreadLocal? 是一个弱引用一旦内存不够的时候进行了垃圾回收就会把 k 对象回收掉。但是 value 使用的是 进行赋值就是一个强引用并不会被垃圾回收器进行回收。所以说这块儿就可能产生内存泄漏。 以上就是弱引用的说明。 四、虚引用 虚引用必须配合引用队列使用被引用对象回收时会将虚引用入队由 Reference Handler 线程调用虚引用相关方法释放直接内存。 为了方便理解我们来看这样一段代码 User user new User(); ReferenceQueue referenceQueue new ReferenceQueue(); PhantomReference phantomReference new PhantomReference(user, referenceQueue);在这段代码中先创建了一个 User 对象然后创建了一个 ReferenceQueue 对象就是一个引用队列最后创建了一个 PhantomReference 对象并且包装了 User 对象和 ReferenceQueue 对象。它们之间的关系如下图所示 首先GC Root 直接关联的是 PhantomReference 虚引用对象一个是 X另一个是 Y。这两个 PhantomReference 对象分别去引用了 User1 对象和 User2 对象。 大家可能会想这里面哪里能体现 ReferenceQueue 队列呢是这样的将来如果发生了垃圾回收把 User1 和 User2 这两个对象回收掉了那么 PhantomReference 虚引用对象本身在进行垃圾回收发生的时候会把虚引用对象 X 和 Y 加入到 ReferenceQueue 引用队列中如下图所示 把 X 和 Y 虚引用对象加入到 ReferenceQueue 引用队列中之后引用队列就会配合 Reference Handler 这个线程来去释放虚引用对象所关联的一些外部资源。 比如说 User1 和 User2 已经被垃圾回收掉了但是回收这两个对象只是释放了 Java 的堆内存资源它们在使用的过程中有可能会使用一些外部的资源这些外部资源有可能不是 Java 的内存有可能使用的是系统的直接内存那这些内存什么时候释放呢这些内存必须要等 Java 对象回收掉之后才能去释放这些外部的资源内存。所以说就需要把这些虚引用对象放入到引用队列中先记录哪些对象被回收了然后由 Reference Handler 根据队列的内容去回收资源就可以了。比如我们示例中的 X 和 Y 两个虚引用对象它们关联的 User 对象已经被回收掉了这个时候我们也应该把 X 和 Y 对应的外部资源进行释放有一个专门的线程来进行释放就叫 Reference Handler。它就会去从引用队列中不断地把这些虚引用对象 X 和 Y 取出来然后把它们占用的外部资源进行释放。 以上就是虚引用对象的说明了它需要配合 ReferenceQueue 引用队列才能使用。 补充 软引用和弱引用也可以通过引用队列去释放自身的资源。 下面我们总结一下这四种引用类型。 五、总结 强引用、软引用、弱引用、虚引用的区别 强引用比较常见只要 GC Root 能关联到就不会被回收。软引用需要配合 SoftReference 使用当垃圾被多次回收内存依然不够的时候会回收软引用对象。弱引用需要配合 WeakReference 使用只要进行了垃圾回收就会把弱引用对象回收。虚引用必须配合引用队列使用被引用对象回收时会将虚引用入队由 Reference Handler 线程调用虚引用相关方法释放直接内存等外部资源。 整理完毕完结撒花~
http://www.hkea.cn/news/14558496/

相关文章:

  • 在哪学习建网站阿里云服务器价格
  • 微能力者恶魔网站谁做的公司的网站建设公司
  • 网站建设需要哪些软件医院网站建设模板下载
  • 网络优化网站 s做网站卖广告多少钱
  • 建设部网站 标准下载建设网站的个人心得体会
  • wordpress导航站主题wordpress插件删除
  • dw做旅游网站模板下载上海营销seo
  • 专业做俄语网站建设企业seo网络营销
  • 四川市网站建设长泰597人才网最新招聘信息
  • 西安网站设设设计素材模板
  • 网站排名优化化网页设计实验报告的结果分析怎么写
  • 网站开发难点分析网站空白页黑链
  • 南阳网站建设与管理互联网广告
  • 简易网站建设wordpress老网站重装法
  • 网站多久备案一次北京石景山私人影院哪里有
  • 做一个简单的公司网站要多少钱wordpress 外部调用插件
  • 公司网站设计师海口北京网站建设
  • 公司网站市场价物流网站的功能与特色
  • 中国建设集团门户网站国内优秀的网站
  • 企业网站备案收费口碑营销网站
  • asp网站 攻击网站推广排名服务
  • 网站开发老是弹广告wordpress用户注册页面
  • 电影推荐算法 网站开发装修公司名称大全
  • 一般购物网站项目大连网站运营制作方案
  • 响应式视频网站模板网站首页设计代码
  • 专门做网站的公司 南阳wordpress 设置登陆界面
  • 龙港做网站潍坊 网站推广
  • 网站建设 中关村下载免费素材库
  • 深圳企业网站备案seo推广 课程
  • 成都企业网站设计创业 建网站