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

石家庄做网站建设公司学网络营销要多少钱

石家庄做网站建设公司,学网络营销要多少钱,wordpress 论坛 注册,前端和网站开发的区别目录 一、强引用二、软引用三、弱引用四、虚引用五、总结 引文#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.pierceye.com/news/752326/

相关文章:

  • 网站建设酷隆莲湖免费做网站
  • 网站建设内容保障制度什么网站权威评价搜索引擎优劣
  • 中国建设局网站东莞市路桥收费所
  • 那个网站上有做婚礼布场样图的公司网站排名
  • 凡客资源东莞市seo网络推广服务机构
  • 网站的安全维护wordpress 文章 定时
  • 网上做题扣分在哪个网站上做网站建设微信商城运营
  • 外贸英文商城网站建设微信公众帐号开发
  • 上海做网站运维的公司用手机制作自己的网站
  • 西安做网站朋朋网络花都区建设网站
  • 国外的贸易网站wordpress 不会编程
  • 设计网页作业seo如何优化网站推广
  • 黑龙江建设网官方网站特种作业电脑网站策划书
  • 系统开发和网站开发厦门专业网站营销
  • 网站在线交谈wordpress信息填写
  • 服饰网站建设微网站建设 合同
  • dede网站 远程生成wordpress后台不能登陆
  • word如何做网站链接湖南省绿色建筑信息平台
  • v9网站模板网站建设六道
  • php网站开发原理企业门户网站费用
  • 白银市建设管理处网站定制网站建设和运营
  • 免费音乐网站建设新闻资讯建站服务商
  • 佛山市建设企业网站服务机构普通网站建设计入什么科目
  • 阿里虚拟机建设网站网络科技有限公司营业执照
  • 如何申请建设网站首页培训机构怎么做线上推广
  • 网站维护升级访问中做网站工单
  • 如何用ae做模板下载网站电脑网站建设规划
  • 北京京水建设集团有限公司网站西青做网站
  • 自己建的网站可以用笔记本做服务器吗网站建设后台系统有哪些
  • 做的asp网站手机号码网站开发软件手机版