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

进入城乡建设网站怎么竣工备案南昌网站建设_南昌做网站公司

进入城乡建设网站怎么竣工备案,南昌网站建设_南昌做网站公司,下载什么软件可以做动漫视频网站,海南注册公司多少钱面试#xff1a; 1.强引用#xff0c;软引用#xff0c;弱引用#xff0c;虚引用分别是什么#xff1f; 2.软引用和弱引用适用的场景#xff1f; 3.你知道弱引用的话#xff0c;能谈谈WeakHashMap吗#xff1f; 目录 一、Java引用 1、强引用#xff08;默认支持模式…面试 1.强引用软引用弱引用虚引用分别是什么 2.软引用和弱引用适用的场景 3.你知道弱引用的话能谈谈WeakHashMap吗 目录 一、Java引用 1、强引用默认支持模式 2、软引用 3、弱引用 3.1、WeakHashMap 4、虚引用 4.1、引用队列 一、Java引用 整体架构 1、强引用默认支持模式 当内存不足JVM开始垃圾回收对于强引用的对象就算是出现了OOM也不会对该对象进行回收死都不收。 强引用是我们最常见的普通对象引用只要还有强引用指向一个对象就能表明对象还“活着”垃圾收集器不会碰这种对象。在Java中最常见的就是强引用把一个对象赋给一个引用变量这个引用变量就是一个强引用。当一个对象被强引用变量引用时它处于可达状态它是不可能被垃圾回收机制回收的即使该对象以后永远不会被用到JVM也不会回收。因此强引用是造成Java内存泄漏的主要原因之一。 对于一个普通的对象如果没有其它的引用关系只要超过了引用的作用域或者显式地相应强引用赋值为null一般认为就是可以被垃圾收集的了当然具体回收时机还是要看垃圾收集策略。 public static void main(String[] args) {Object o1 new Object();Object o2 o1;o1 null;System.gc();System.out.println(o2);System.out.println(o1); } 2、软引用 软引用是一种相对强引用弱化了一些的引用需要用java.lang.ref.SoftReference类来实现可以让对象豁免一些垃圾收集。对于只有软引用的对象来说当系统内存充足时它不会被回收。当系统内存不足时它会被回收。 软引用通常用在对内存敏感的程序中比如高速缓存就有用到软引用内存够用的时候就保留不够用就回收 public static void main(String[] args) {softRefMemoryEnough();softRefMemoryNotEnough();//-Xms5m -Xmx5m -XX:PrintGCDetails }/*** 内存够用的时候就保留不够用就回收*/ public static void softRefMemoryEnough() {Object o new Object();SoftReferenceObject softReference new SoftReference(o);System.out.println(o);System.out.println(softReference.get());o null;System.gc();System.out.println(o);System.out.println(softReference.get()); }/*** 内存不够用的时候就回收*/ public static void softRefMemoryNotEnough() {Object o new Object();SoftReferenceObject softReference new SoftReference(o);System.out.println(o);System.out.println(softReference.get());o null;try {byte[] bytes new byte[30 * 1024 * 1024];}catch (Throwable e){e.printStackTrace();}finally {System.out.println(o);System.out.println(softReference.get());} } 3、弱引用 弱引用需要用java.lang.ref.WeakReference类来实现它比软引用的生存期更短对于只有弱引用的对象来说只要垃圾回收机制一运行不管JVM的内存空间是否够用都会回收该对象占用的内存。 public static void main(String[] args) {Object o new Object();WeakReferenceObject softReference new WeakReference(o);System.out.println(o);System.out.println(softReference.get());o null;System.gc();System.out.println(o);System.out.println(softReference.get()); } //结果 //java.lang.Object15db9742 //java.lang.Object15db9742 //null //null 使用场景 一、假如有一个应用需要读取大量的本地图片 1、如果每次读取图片都从硬盘读取则会严重影响性能 2、如果一次性全部加载到内存中又可能造成内存溢出。 此时使用软引用可以解决这个问题。 设计思路是用一个HashMap来保存图片的路径和相应图片对象关联的软引用之间的映射 关系在内存不足时JVM会自动回收这些缓存图片对象所占用的空间从而有效地避免了OOM的问题。 MapString,SoftReferenceBitmap imageCache new HashMap(); 二、Mybatis源码底层使用软引用等。 三、你知道弱引用的话能谈谈WeakHashMap吗 3.1、WeakHashMap public static void main(String[] args) {hashMap();System.out.println();weakHashMap(); }private static void hashMap() {HashMapInteger, String map new HashMapInteger, String();Integer key new Integer(1);String value HashMap;map.put(key, value);System.out.println(map);//{1HashMap}key null;System.out.println(map);//{1HashMap}System.gc();System.out.println(map \t map.size());//{1HashMap} 1 }private static void weakHashMap() {WeakHashMapInteger, String map new WeakHashMapInteger, String();Integer key new Integer(2);String value WeakHashMap;map.put(key, value);System.out.println(map);//{2WeakHashMap}key null;System.out.println(map);//{2WeakHashMap}System.gc();System.out.println(map \t map.size());//{} 0 } 4、虚引用 虚引用需要java.lang.ref.PhantomReference类来实现。 顾名思义就是形同虚设与其他几种引用都不同虚引用并不会决定对象的生命周期。 如果一个对象仅持有虚引用那么它就和没有任何引用一样在任何时候都可能被垃圾回收器回收它不能单独使用也不能通过它访问对象虚引用必须和引用队列ReferenceQueue联合使用。 虚引用的主要作用是跟踪对象被垃圾回收的状态。仅仅是提供了一种确保对象被finalize以后做某些事情的机制。PhantomReference的get方法总是返回null因此无法访问对应的引用对象。其意义在于说明一个对象已经进入finalization阶段可以被gc回收用来实现比finalization机制更灵活的回收操作。 换句话说设置虚引用关联的唯一目的就是在这个对象被收集器回收的时候收到一个系统通知或者后续添加进一步的处理。Java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。 public static void main(String[] args) {Object o new Object();ReferenceQueueObject referenceQueue new ReferenceQueue();PhantomReferenceObject phantomReference new PhantomReference(o, referenceQueue);System.out.println(o);System.out.println(phantomReference.get());System.out.println(referenceQueue.poll());System.out.println();o null;System.gc();System.out.println(o);System.out.println(phantomReference.get());System.out.println(referenceQueue.poll()); } // //java.lang.Object15db9742 //null //null // //null //null //java.lang.ref.PhantomReference6d06d69cJava提供了4种引用类型在垃圾回收的时候都有自己各自的特点。 ReferenceQueue是用来配合引用工作的没有ReferenceQueue一样可以运行。 创建引用的时候可以指定关联的队列当GC释放对象内存的时候会将引用加入到引用队列如果程序发现某个虚引用已经被加入到引用队列那么就可以在所引用的对象的内存被回收之前采取必要的行动相当于是一种通知机制。 当关联的引用队列中有数据的时候意味着引用指向的堆内存中的对象被回收。通过这种方式JVM允许我们在对象被销毁后做一些我们自己想做的事情。 4.1、引用队列 public class ReferenceQueueT { 被回收前需要被引用队列保存下。 public static void main(String[] args) {Object o new Object();ReferenceQueueObject referenceQueue new ReferenceQueue();WeakReferenceObject weakReference new WeakReference(o, referenceQueue);System.out.println(o);System.out.println(weakReference.get());System.out.println(referenceQueue.poll());System.out.println();o null;System.gc();System.out.println(o);System.out.println(weakReference.get());System.out.println(referenceQueue.poll()); } //结果 //java.lang.Object15db9742 //java.lang.Object15db9742 //null // //null //null //java.lang.ref.WeakReference6d06d69cJava 并发编程三大特性--volatile 一个程序员最重要的能力是写出高质量的代码 有道无术术尚可求也有术无道止于术。 无论你是年轻还是年长所有程序员都需要记住时刻努力学习新技术否则就会被时代抛弃
http://www.pierceye.com/news/776027/

相关文章:

  • 石家庄网站建设接单常见的网络直接营销有哪些
  • 上海网站建设技术托管找合伙人做网站
  • 网站和自媒体都可以做东莞专业营销网站建设推广
  • 毕业设计网站怎么做校园网二手书交易网站建设
  • 网站运营托管协议凡科建设网站还用买服务器吗
  • 黑龙江省建设网官方网站erp系统软件免费版
  • 网站建设案例算命网站百度搜索站长平台网站
  • 手机wap网站模板 带后台thefox wordpress
  • 公司网站建设与设计制作游戏网站的设计方案
  • 移动端网站设计规范程序员帮忙做放贷网站
  • 网站到期查询广西建设信息网
  • 服务器可以放几个网站市场调研的五个步骤
  • 网站前置审批h5页面制作软件thinkphp
  • 企业网站设计调查问卷步骤记录器
  • dw里响应式网站怎么做郑州电力高等专科学校学费多少
  • 用app怎么样建网站深圳专业做网站的
  • 怎样做浏览的网站不被发现互联网营销师报考条件
  • 电子商务网站建设与电子支付网站进不去怎么解决
  • 微信网站模板下载电子商务网站建设的四个步骤
  • 网站内如何做论坛建设网站宝安区
  • 公司网站管理制定的作用网站建设设计文档模板
  • 做网站 附加信息全网整合营销公司
  • 做网站都需要用到什么软件每年网站备案抽查
  • 网站如何做电脑和手机软件ps素材网站大全
  • 佛山网站建设培训高能建站
  • 网站开发的相关技能广州有哪些广告公司
  • jsp网站设计用以前用过的域名做网站
  • 魔兽世界做宏网站家具设计与工程就业前景
  • 网站案例介绍平面设计网址推荐
  • 网站上的验证码怎么做简书 导入 wordpress