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

网站搭建是什么专业404免费模板下载

网站搭建是什么专业,404免费模板下载,设计好看的网站,天河建设网站多少钱引言 《Effective Java Programming Language Guide》 一书中强烈建议不要使用java的finalize()方法去做对象消亡前的清理。因为jvm调用finalize()方法的时机并不确定#xff0c;容易导致Memory-Retention Issues。通俗点讲就是内存没办法及时回收。 详细的见oracle的官方说明…引言 《Effective Java Programming Language Guide》 一书中强烈建议不要使用java的finalize()方法去做对象消亡前的清理。因为jvm调用finalize()方法的时机并不确定容易导致Memory-Retention Issues。通俗点讲就是内存没办法及时回收。 详细的见oracle的官方说明https://www.oracle.com/technical-resources/articles/javase/finalization.html。 Memory-Retention Issues问题简述 如果类有重写finalize()方法JVM会将该类的对象标记为finalizable区别于普通对象被垃圾收集器判定为不可达时会立即回收内存finalizable的对象会经过更多的GC周期。 下图来自oracle官方。 finalizable对象回收通常经历以下过程 垃圾回收器检查到该对象不可达垃圾回收器将该对象加入到finalization队列对象变成可达专门的Finalizer线程从finalization队列中将对象移除并执行对象的finalize()方法,并将对象标记为finalized垃圾回收器再次发现该对象不可达而且为finalized状态的(finalize方法已执行过)因此直接回收该对象内存。 以上过程的一些个人分析 jvm为什么不直接在回收对象前调用finalize()方法而是使用专门的线程去执行 java每次GC需要通过可达性分析标记大量对象回收内存后还涉及内存整理如果把finalize()方法的调用也放到这个过程中GC耗时会更长影响系统的响应时间所以只能由另外的过程去处理。 Memory-Retention问题 从上述过程可以看到finalizable对象至少要2个GC周期才能将对象回收掉。更有甚者如果系统中有大量的对象是finalizable或者有些对象finalize()方法本身就比较耗时加上只有一个Finalizer线程这个线程优先级并不比别的高还会和其他线程竞争执行资源对象在finalization队列中呆的时间更长。在这期间如果有发生GC垃圾收集器也是无法清理这些对象的因此这些对象还在被finalization队列强引用。所以容易产生Memory-Retention问题。 Memory-Retention问题解决方案 《Effective Java Programming Language Guide》建议使用JDK的Cleaner来做对象消亡前的清理其基于PhantomReference下面系统的介绍JDK的Reference。 Reference解析 java的Reference的相关子类用于应用层与垃圾收集器有更多的交互通俗点讲就是垃圾收集器给应用层暴露一些API让应用对对象的回收时机有了一定的控制能力。 SoftReference 垃圾回收器会根据内存使用情况对软引用对象进行回收当然jvm会尽可能的不回收软引用对象至于什么情况下回收JDK并没有明确说明。根据其特点可以看出SoftReference可以用于缓存设计缓存这样不用自己去设计LRU等算法对缓存进行清理。 一旦垃圾收集器认为软引用对象需要被清理时JVM会解除软引用对对象的引用(即将referent字段置为null)同时或者稍后将软引用自己放到ReferenceQueue(如果创建软引用时有传入) JDK保证在jvm抛出OutOfMemoryError前清掉所有的软引用对象。除此之外并不保证软引用对象被清理的时间点而且也不保证软引用对象清理的顺序。 WeakReference 一旦垃圾回收器检测到对象只有弱引用会立即解除弱引用(将弱引用的referent字段置为null)同时或者稍后将弱引用放入ReferenceQueue(如果创建软引用时有传入)。 弱引用不能阻止垃圾回收器对对象的回收因此弱引用一般用于“规范化映射(canonicalizing mappings)”,例如WeakHashMap。 对canonicalizing mappings详细说明可以阅读 https://objectcomputing.com/resources/publications/sett/june-2000-collaborating-with-the-java-memory-manager https://wiki.c2.com/?CanonicalizedMapping PhantomReference 虚引用在垃圾回收器确定其引用对象可以被回收后放到ReferenceQueue这一点与SoftReference及WeakReference有所区别。对于finalizable对象后两者在垃圾回收器将对象放入finalization队列时就会解除引用并将引用放入到ReferenceQueue。而PhantomReference必须在finalizable对象从finalization队列移除后并且被垃圾回收器再次检测到不可达能够真正的回收其内存时放入到ReferenceQueue中而且引用不会自动解除。 未完待续
http://www.zqtcl.cn/news/305132/

相关文章:

  • 自动建设网站系统阿里云虚拟主机多网站
  • 区块链app排名网站seo其应用
  • 海口网站建设咨询一般网站建设需求有哪些方面
  • 免费网站建设朋友交流模板王网站
  • wordpress不同分类不同广告 文章属于不同分类网站 优化手机版
  • 淮安市建设银行网站首页王也是谁
  • 好用的网站管理系统给wordpress程序提速
  • 网页设计模板的网站网站开发包括哪些
  • 做网站的标准国外html5网站模板
  • 手机网站设计公司立找亿企邦郑州seo网络营销技术
  • 网站设计优秀作品网站开发的背景知识
  • 响应式网站建设流程温州网站优化案例
  • 谢岗镇网站建设上海的网吧
  • 厦门网站建设 智多星做印刷的有什么网站
  • 怎样做原创短视频网站wordpress文章加音频
  • 建设一个网站所需要注意的最有前途的15个专业
  • 橱柜手机网站模板软件设计说明书
  • 山西云起时网站建设wordpress 字体大小
  • 网站建设详细报价电商开发系统
  • 搜索引擎营销的主要方法开封seo推广
  • 怎么在网上找做网站的客户安徽安能建设集团网站
  • 乾安网站建设哪家专业h5在线编辑
  • 公司网站建设模块简介广17网站一起做网店
  • 外包网站多少钱柳市建设网站
  • 做外贸站推广全国网页制作大赛
  • 手机网站关键词排名微信小程序怎么做网页
  • 利用万网做网站wordpress过滤敏感
  • 大连 响应式网站制作郑州网站建设中国建设建设银行
  • 网站关键词布局关于静态网站开发相关新闻
  • 安徽新站优化网站建设哪些好