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

做互助盘网站多少钱后台管理网站开发

做互助盘网站多少钱,后台管理网站开发,最新军事新闻视频在线观看,简洁的网站地图模板深入理解Java中的引用(二)——强软弱虚引用在上一篇文章中介绍了Java的Reference类#xff0c;本篇文章介绍他的四个子类#xff1a;强引用、软引用、弱引用、虚引用。强引用(StrongReference)强引用是我们在代码中最普通的引用。示例代码如下#xff1a;Object o new Obje…深入理解Java中的引用(二)——强软弱虚引用在上一篇文章中介绍了Java的Reference类本篇文章介绍他的四个子类强引用、软引用、弱引用、虚引用。强引用(StrongReference)强引用是我们在代码中最普通的引用。示例代码如下Object o new Object(); // 强引用在JVM的GC算法中如果一个对象具有强引用那么JVM宁可抛出Out of Memory错误垃圾回收器也不会去回收这个对象。当在代码里显示的写o null或者该对象的引用作用域是在一个函数里代码如下当线程调用完test就会退出方法栈引用不存在垃圾回收器才会在某个时刻回收Object对象。public void test(){Object o new Object(); // 强引用}软引用(SoftReference)如果一个对象有一个软引用那么在内存足够的情况下该对象就不会被垃圾回收器回收。网上有很多资料说软引用只会在内存空间不够用的情况下对象才会被回收。 那么什么时候才是内存不够用呢首先看一下SoftReference类的源码可以看到有两个字段。这两个字段的作用已经标注这与JVM GC有什么关系呢/*** 记录最近一次被GC的时间。*/static private long clock;/*** 每次调用get方法的时候更新* 记录当前Reference最近一次被访问的时间*/private long timestamp;一起看一下HotSpot的源码对于软引用的回收策略见下面should_clear_reference函数。// The oop passed in is the SoftReference object, and not// the object the SoftReference points to.bool LRUMaxHeapPolicy::should_clear_reference(oop p,jlong timestamp_clock) {jlong interval timestamp_clock - java_lang_ref_SoftReference::timestamp(p);assert(interval 0, Sanity check);// The interval will be zero if the ref was accessed since the last scavenge/gc.if(interval _max_interval) {return false;}return true;}上述代码中interval表示当前引用存活了多久。他的值就是对应上述java代码中的clock与timestamp相减。interval与_max_interval比较如果大于 _max_interval那么就和弱引用一样处理如果小于就当做强引用处理。_max_interval的赋值函数如下// Capture state (of-the-VM) information needed to evaluate the policyvoid LRUMaxHeapPolicy::setup() {size_t max_heap MaxHeapSize;max_heap - Universe::get_heap_used_at_last_gc();max_heap / M;_max_interval max_heap * SoftRefLRUPolicyMSPerMB;assert(_max_interval 0,Sanity check);}通过源码可见首先是max_heap减去上次GC之后剩余堆大小如果上次GC之后还有很多剩余空间说明内存空间不够用了那么max_heap的值就越小相应_max_interval也越小软引用就越可能被回收。软引用的一个作用是实现内存敏感的高速缓存。比如浏览器的后退按钮(1)如果网页浏览结束就进行内容的回收则按后退查看前面浏览过的页面时需要重新构建。(2)如果将浏览过的网页存储到内存中会造成内存的大量浪费甚至会造成内存溢出。通过软引用可以解决该问题Browser prev new Browser(); // 获取页面进行浏览SoftReference sr new SoftReference(prev); // 浏览完毕后置为软引用if(sr.get()!null){rev (Browser) sr.get(); // 还没有被回收器回收直接获取}else{prev new Browser(); // 由于内存吃紧所以对软引用的对象回收了sr new SoftReference(prev); // 重新构建}弱引用(WeakReference)只具有弱引用的对象生命周期更短。当垃圾回收器发现了只有弱引用的对象时候无论内存空间是否足够都会被GC回收。当你偶尔需要引用某个对象随时能获取该对象但是不想介入该对象的生命周期的时候就可以使用弱引用 因为弱引用不会对对象的垃圾回收判断产生附加的影响。当弱引用绑定的对象被垃圾回收的时候JVM会把这个弱引用加入到相关联的ReferenceQueue中。这里抛出两个问题(1)弱引用什么时候会被加入到ReferenceQueue中由什么决定的呢(2)如果绑定的对象GC之后存活了下来弱引用怎么知道这个对象的新地址呢第一种情况GC扫描到只存在弱引用的时候就会把它放到链表里。还有第二种情况一个对象既有强引用又有弱引用的情况下面通过图片来解释上面两个问题image.png上图表示C同时存在两个引用强引用A和弱引用B。第一种情况GC先扫描到A这种情况下GC同时会扫描到CA和C都会搬到Survivor区。然后扫描到B发现B引用的C搬到到了新的Survivor这个时候就把B也搬到Survivor并把C的新地址更新到B结果如下image.png第二种情况GC先扫描到BGC还是会先把B放到ReferenceQueue中由于C还是存活的所以B会被搬到Survivor中。然后扫描到AA和C都会搬到Survivor中GC结束的时候B所指向的对象就不对了如下图所示image.png该情况下会重新遍历ReferenceQueue发现绑定的对象依然存活C‘ 的指针是指向C的于是就把B再指向C就可以了同时因为C依然存活把B从ReferenceQueue中移除。新的地址空间如下图所示image.png具体过程可以查看海纳知乎专栏。虚引用(PhantomReference)虚引用不会对对象的垃圾回收有任何附加影响他与软引用和弱引用的一个区别在于虚引用必须和引用队列 (ReferenceQueue)联合使用。查看他的构造方法可以看到必须与一个ReferenceQueue绑定而且他的get方法返回的一直是nullpublic T get() {return null;}public PhantomReference(T referent, ReferenceQueue super T q) {super(referent, q);}虚引用主要用在跟踪对象垃圾回收的状态。具体应用会在在下一节讲到DirectByteBuffer 与ThreadLoal回收的时候详细分析。总结关于强引用、软引用、弱引用与虚引用在垃圾回收时的区别可以用下图表示image.png下图总结了四种引用在其他方面的区别image.png
http://www.pierceye.com/news/92526/

相关文章:

  • 个人网站 备案 类型小红书笔记推广
  • 门户网站怎么创建网页制作步骤php
  • 六师五家渠市建设局网站wordpress 定时发布插件
  • 深圳外贸网站外贸网站建设安阳网站建设服务
  • wdcp 网站建设做民宿推广都有哪些网站
  • 常见的网站开发环境网站建设的结构
  • 贵阳网站推广优化公司做网站的公司搞什么活动
  • 安徽平台网站建设制作坪山网站设计的公司
  • 如何做挂qq的网站2017网站建设
  • wordpress语言切换网站保定广告设计公司
  • 做网站需要走公司吗运行一个网站要多少钱
  • 怎样可以免费做网站wap网站软件
  • 织梦手机网站免费模板漳州城乡建设局网站
  • 厦门建设网站的公司php除了写网站吗
  • 如何做全网影视网站居然之家装修公司怎么样
  • 佛山网站建设公司哪家最好万能软文范例800字
  • 网站排名优化如何做wordpress 免费版广告
  • 拓客网站建设建易网官网
  • 网站目录链接怎么做的建网站pc版 (报价)
  • 北京网站制作业务如何开展做网站海报
  • 网站的设计方法有哪些互动网络游戏公司网站建设
  • 公司网站开发制作公司国内重大新闻2022
  • 搜索引擎排名网站北京到广州快递要几天
  • 制作网站怎么制作html网站 下载
  • 深圳网络营销网站设计做个网站哪里可以做
  • 九牛科技网站开发微信营销小型网站建设步骤
  • 分类信息系统网站模板口碑好的网站建设多少钱
  • 米粒网站建设网站开发项目费用预算
  • 12380网站建设的意见建议公司网站维护和更新属于哪个部门
  • 公众号做微网站吗做国外网站的站长