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

网站建设都湘潭做网站价格 q磐石网络

网站建设都,湘潭做网站价格 q磐石网络,机械加工网上平台,wordpress 安装 404概述 平时在编写代码的时候内存都是由jvm管理#xff0c;对象的回收也是jvm在管理#xff1b; 但是有些时候jvm无法回收对象#xff0c;最后就会抛出oom异常. 那么那些回收不了的对象肯定有区别于能回收的对象#xff1b; 先上一波引用类型介绍 强引用 比如平常我们直…概述 平时在编写代码的时候内存都是由jvm管理对象的回收也是jvm在管理 但是有些时候jvm无法回收对象最后就会抛出oom异常. 那么那些回收不了的对象肯定有区别于能回收的对象 先上一波引用类型介绍 强引用 比如平常我们直接new的对象一个对象具有强引用那垃圾回收器是不会去回收的内存不足时就直接抛oom异常;强引用对象的回收一般要么手动set null要么就是超出自己的生命周期比如方法结束后方法内new的变量就结束自己的生命周期了. 官方说法一个方法的内部有一个强引用这个引用保存在Java栈中而真正的引用内容(Object)保存在Java堆中。 当这个方法运行完成后就会退出方法栈则引用对象的引用数为0这个对象会被回收。 常见的ArrayList的clear()就是手动赋值null 软引用(SoftReference) 如果一个对象只具有软引用则内存空间充足时垃圾回收器就不会回收它如果内存空间不足了就会回收这些对象的内存。只要垃圾回收器没有回收它该对象就可以被程序使用。 // 强引用 String strongReference new String(abc); // 软引用 String str new String(abc); SoftReferenceString softReference new SoftReferenceString(str);软引用可以和一个引用队列(ReferenceQueue)联合使用。如果软引用所引用对象被垃圾回收JAVA虚拟机就会把这个软引用加入到与之关联的引用队列中。 软引用对象是在jvm内存不够的时候才会被回收我们调用System.gc()方法只是起通知作用JVM什么时候扫描回收对象是JVM自己的状态决定的。就算扫描到软引用对象也不一定会回收它只有内存不够的时候才会回收。 ReferenceQueueString referenceQueue new ReferenceQueue(); String str new String(abc); SoftReferenceString softReference new SoftReference(str, referenceQueue);str null; // Notify GC System.gc();System.out.println(softReference.get()); // abcReference? extends String reference referenceQueue.poll(); System.out.println(reference); //null当内存不足时JVM首先将软引用中的对象引用置为null然后通知垃圾回收器进行回收 if(JVM内存不足) {// 将软引用中的对象引用置为nullstr null;// 通知垃圾回收器进行回收System.gc(); }垃圾收集线程会在虚拟机抛出OutOfMemoryError之前回收软引用对象而且虚拟机会尽可能优先回收长时间闲置不用的软引用对象。对那些刚构建的或刚使用过的较新的软对象会被虚拟机尽可能保留; 比如浏览器回退时的内容获取就可以使用软引用 // 获取浏览器对象进行浏览 Browser browser new Browser(); // 从后台程序加载浏览页面 BrowserPage page browser.getPage(); // 将浏览完毕的页面置为软引用 SoftReference softReference new SoftReference(page);// 回退或者再次浏览此页面时 if(softReference.get() ! null) {// 内存充足还没有被回收器回收直接获取缓存page softReference.get(); } else {// 内存不足软引用的对象已经回收page browser.getPage();// 重新构建软引用softReference new SoftReference(page); }弱引用(WeakReference) 弱引用与软引用的区别在于只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它所管辖的内存区域的过程中一旦发现了只具有弱引用的对象不管当前内存空间足够与否都会回收它的内存。不过由于垃圾回收器是一个优先级很低的线程因此不一定会很快发现那些只具有弱引用的对象。 String str new String(abc); WeakReferenceString weakReference new WeakReference(str); str null;JVM首先将软引用中的对象引用置为null然后通知垃圾回收器进行回收 str null; System.gc();让一个弱引用再次变为一个强引用 String str new String(abc); WeakReferenceString weakReference new WeakReference(str); // 弱引用转强引用 String strongReference weakReference.get();同样弱引用可以和一个引用队列(ReferenceQueue)联合使用如果弱引用所引用的对象被垃圾回收Java虚拟机就会把这个弱引用加入到与之关联的引用队列中。 虚引用(PhantomReference) 虚引用顾名思义就是形同虚设。与其他几种引用都不同虚引用并不会决定对象的生命周期。如果一个对象仅持有虚引用那么它就和没有任何引用一样在任何时候都可能被垃圾回收器回收。 虚引用主要用来跟踪对象被垃圾回收器回收的活动。 虚引用与软引用和弱引用的一个区别在于 虚引用必须和引用队列(ReferenceQueue)联合使用。当垃圾回收器准备回收一个对象时如果发现它还有虚引用就会在回收对象的内存之前把这个虚引用加入到与之关联的引用队列中。 String str new String(abc); ReferenceQueue queue new ReferenceQueue(); // 创建虚引用要求必须与一个引用队列关联 PhantomReference pr new PhantomReference(str, queue);参考了大佬的博文 https://juejin.cn/post/6844903665241686029
http://www.pierceye.com/news/959565/

相关文章:

  • 开放大学门户网站建设方案动易网站模版的制作
  • 怎样做个网站聊城网站推广动态
  • 门户网站优化南阳网站制作哪家好
  • 环球易购招聘网站建设宜昌最权威网站建设公司
  • 建设银行官网首页网站南山片区怎么免费制作一个网站
  • 100个免费推广网站的排名wordpress改变默认后台登录地址
  • 做爰片免费观看网站腾讯广点通
  • 上海小企业网站建设我想找个人做网站
  • 第一代网站建设技术wordpress设置金币
  • 邯郸移动网站建设价格制作移动端网站价格
  • wordpress设置多站点盐城公司做网站
  • 便宜建站空间深圳品牌网站设计格
  • 网站 建设可行性报告做公司网站的平台
  • 什么网站内链建设建设专业网站怎样收费
  • wordpress 图片站主题seo前景
  • jsp编写网站网站开发售后工作
  • 门户网站建站目标泰安招聘信息最新招聘2022
  • 电商网站建设效果app技术
  • 关于文化的网站模板做免费小说网站怎样赚钱
  • 做外贸的人常用的网站黄骅贴吧二手房
  • 网站建设科目提供网站建设教学视频
  • iis搭建网站教程win10淘宝客网站建设的策略
  • 怎么做一个网站 免费90平方设计
  • 网站建设的目的与意义是什么东营网站建设教程
  • 盐城seo网站优化珠海微信网站
  • 杭州市住房和城乡建设部网站网站建设项目计划书如何写
  • 免费找客户网站wordpress knowhow 下载
  • 大连企业招聘网站网站功能描述书须包含哪些内容
  • 教用vs2013做网站的书王烨医生
  • 滨州网站建设费用哪家购物网站建设好