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

重庆h5建站软件项目分为哪几个阶段

重庆h5建站,软件项目分为哪几个阶段,王烨辉,浏览器下载安装2023最新版目录 一、前言二、Java 四种引用类型强引用#xff08;StrongReference#xff09;软引用#xff08;SoftReference#xff09;弱引用#xff08;WeakReference#xff09;虚引用#xff08;PhantomReference#xff09; 三、总结 一、前言 Java有四种引用类型#x… 目录 一、前言二、Java 四种引用类型强引用StrongReference软引用SoftReference弱引用WeakReference虚引用PhantomReference 三、总结 一、前言 Java有四种引用类型强引用、软引用、弱引用、虚引用Java中默认声明的就是强引用我们用的最多的也是强引用这里会对每种引用关系做说明和演示。 提前准备一个User类演示时需要使用 public class User {private Long id; }二、Java 四种引用类型 强引用StrongReference Java中默认声明的就是强引用比如 User user new User(); // 创建一个User对象使用强引用 System.gc(); // 手动触发GC if(user null){System.out.println(user对象已经被GC回收 user); }else {System.out.println(user对象没有被GC回收 user); } user null; // 手动置null 取消引用只要强引用存在垃圾回收器将永远不会回收被引用的对象哪怕内存不足时JVM也会直接抛出OutOfMemoryError不会去回收。如果想中断强引用与对象之间的联系可以显示的将强引用赋值为null这样一来JVM就可以适时的回收对象。 软引用SoftReference 如果一个对象只具有软引用在内存空间足够的时候就算手动触发垃圾回收也是不会回收它的如果内存空间不足了就会回收这些对象的内存。只要垃圾回收器没有回收它该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存。 要模拟出这个效果需要在启动参数中设置堆内存大小 -Xmx1M -Xms1MSoftReferenceUser softRef new SoftReference(new User()); // 软引用 System.gc(); // 手动触发GC if(softRef.get() null){System.out.println(user对象已经被GC回收 softRef.get()); }else {System.out.println(user对象没有被GC回收 softRef.get()); } // 模拟内存溢出 这里创建1M的Byte数组 try {Byte[] bytes new Byte[1024 * 1024 * 1024]; }catch (OutOfMemoryError e){e.printStackTrace(); } if(softRef.get() null){System.out.println(user对象已经被GC回收 softRef.get()); }else {System.out.println(user对象没有被GC回收 softRef.get()); }软引用可以结合ReferenceQueue来使用当由于系统内存不足导致软引用的对象被回收了JVM会把这个软引用SoftReference对象加入到与之相关联的ReferenceQueue中SoftReference 对象除了具有保存软引用的特殊性之外也具有Java对象的一般性。所以当软可及对象被回收之后虽然这个 SoftReference 对象的get()方法返回 null但这个 SoftReference 对象已经不再具有存在的价值需要一个适当的清除机制避免大量 SoftReference 对象带来的内存泄漏使用 ReferenceQueue 清除失去了软引用对象SoftReference。 ReferenceQueue referenceQueue new ReferenceQueue(); // 引用队列 SoftReferenceUser softRef new SoftReference(new User(),referenceQueue); // 软引用 System.gc(); // 手动触发GC if(softRef.get() null){System.out.println(user对象已经被GC回收 softRef.get()); }else {System.out.println(user对象没有被GC回收 softRef.get()); } // 模拟内存溢出 这里创建1M的Byte数组 try {Byte[] bytes new Byte[1024 * 1024 * 1024]; }catch (OutOfMemoryError e){e.printStackTrace(); } if(softRef.get() null){System.out.println(user对象已经被GC回收 softRef.get()); }else {System.out.println(user对象没有被GC回收 softRef.get()); } // 当软引用User对象被回收后 referenceQueue.poll() 能获取到软引用SoftReference对象 if(softRef referenceQueue.poll()){softRef null; }弱引用WeakReference 只有弱引用的对象当JVM触发gc时就会回收该对象。与软引用不同的是不管是否内存不足弱引用都会被回收。弱引用也可以结合ReferenceQueue来使用当由于系统触发gc导致弱引用的对象被回收了JVM会把这个弱引用WeakReference对象加入到与之相关联的ReferenceQueue中不过由于垃圾收集器线程的优先级很低所以弱引用不一定会被很快回收。 WeakReferenceUser weakRef new WeakReference(new User()); // 弱引用 if(weakRef.get() null){System.out.println(user对象已经被GC回收 weakRef.get()); }else {System.out.println(user对象没有被GC回收 weakRef.get()); } System.gc(); // 手动触发GC if(weakRef.get() null){System.out.println(user对象已经被GC回收 weakRef.get()); }else {System.out.println(user对象没有被GC回收 weakRef.get()); }虚引用PhantomReference 虚引用主要用来跟踪对象被垃圾回收器回收的活动。虚引用与软引用和弱引用的一个区别在于虚引用必须和引用队列(ReferenceQueue)联合使用。当垃圾回收器回收一个对象时如果发现它还有虚引用就会把这个虚引用加入到与之关联的引用队列中。程序可以通过判断引用队列中是否已经加入了虚引用来了解被引用的对象是否将要被垃圾回收。如果程序发现某个虚引用已经被加入到引用队列那么就可以在所引用的对象的内存被回收之前采取必要的行动。由于Object.finalize()方法的不安全性、低效性常常使用虚引用完成对象回收前的资源释放工作。 User user new User(); //创建一个强引用对象 ReferenceQueue referenceQueue new ReferenceQueue(); // 引用队列 PhantomReferenceUser phantomReference new PhantomReference(user, referenceQueue); // 使用虚引用指向这个内存空间 并且绑定引用队列 System.out.println(phantomReference.get()); // 虚引用是获取不到引用值的 get方法返回的null user null; // 释放这个内存空间此时只剩phantomReference通过虚引用指向它 System.gc(); // 手动触发GC // 被清除的队列中取出被回收的对象 while (true) {Reference? extends User poll referenceQueue.poll();if (poll!null) {System.out.println(虚引用对象被回收 处理其它逻辑);return;} }三、总结 Java的四种引用类型的级别由高到低依次为强引用 软引用 弱引用 虚引用 级别回收时机用途强引用不会回收所有的直接引用软引用内存不足时回收联合ReferenceQueue构造有效期短/占内存大/生命周期长的对象的二级高速缓冲器(内存不足才清空)弱引用垃圾回收时联合ReferenceQueue构造有效期短/占内存大/生命周期长的对象的一级高速缓冲器(系统发生gc则清空)虚引用垃圾回收时联合ReferenceQueue来跟踪对象被垃圾回收器回收的活动
http://www.zqtcl.cn/news/405063/

相关文章:

  • 寿光企业建站流程个人网站用什么软件
  • 网站建设与管理自考本全国卷wordpress 关闭文章修订
  • 兴义市建设局网站首页网站开发项目实训总结
  • 个人网站空间收费网络软文营销案例
  • 网站开发文件结构组成微网站移交
  • 西安全网优化 西安网站推广网页浏览器缩略词
  • 网站开发及企业推广营销型网站建设怎么收费
  • 网站建设与管理ppt课件百度云盘关键词推广营销
  • c asp.net网站开发书宁波建设业协会网站
  • 政务网站建设发言材料知名互联网公司有哪些
  • 网站搭建制作建e室内设计网画图
  • 重庆市建设工程施工安全管理信息网北京seo公司网站
  • 国外做调查问卷的网站建设邮费自己的网站 要不要购买服务器的
  • 网站建设和优化排名四川建设网官网证书查询入口
  • 如何搜名字搜到自己做的网站电子商务平台icp备案证明
  • 网站建设与管理工作内容北京网站建设价
  • 做网站选哪个语言软文营销的方法
  • 青岛正规公司网站建设公司中国建设银行注册网站
  • 免费个人网站平台关键词检索
  • 定制型网站建设推广宁河网站建设
  • 主流网站开发语言有哪些电子邮件营销
  • 扫描二维码进入公司网站怎样做在万网上域名了怎么做网站
  • 销售型网站设计怎么做网站广告位
  • 网站推广的方法ppt购物网站logo
  • 网站关键词分割wordpress为展示的作品投票
  • 建立网站 域名 服务器吗wordpress超链接出错
  • 外贸开发网站建设注册会计师协会
  • 莆田建设网站dw网页设计作品及源码
  • 360免费建站视频淘宝客的网站怎么做
  • 四川自助seo建站短视频推广计划