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

学网站开发需要多长时间圣诞节网站怎么做

学网站开发需要多长时间,圣诞节网站怎么做,西安好的互联网设计公司,离开东莞最新政策垃圾收集 (Garbage Collection,GC) 垃圾收集主要是针对堆和方法区进行。程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后就会消失,因此不需要对这三个区域进行垃圾回收。 判断一个对象是…

垃圾收集 (Garbage Collection,GC)

垃圾收集主要是针对堆和方法区进行。程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后就会消失,因此不需要对这三个区域进行垃圾回收。

判断一个对象是否可被回收

如果一个或多个对象没有任何的引用指向它了,那么这个对象现在就是垃圾,如果定位了垃圾,则有可能会被垃圾回收器回收。

如果要定位什么是垃圾,有两种方式来确定,第一个是引用计数法,第二个是可达性分析算法

引用计数算法

为对象添加一个引用计数器,当对象增加一个引用时计数器加 1,引用失效时计数器减 1。引用计数为 0 的对象可被回收。

在两个对象出现循环引用的情况下,此时引用计数器永远不为 0,导致无法对它们进行回收。正是因为循环引用的存在,因此 Java 虚拟机不使用引用计数算法。

可达性分析算法

通过判断对象的引用链是否可达来决定对象是否可以被回收。

以 GC Roots 为起始点进行搜索,可达的对象都是存活的,不可达的对象可被回收

方法区的回收

因为方法区主要存放永久代对象,而永久代对象的回收率比新生代低很多,所以在方法区上进行回收性价比不高。

主要是对常量池的回收和对类的卸载。

为了避免内存溢出,在大量使用反射和动态代理的场景都需要虚拟机具备类卸载功能。

类的卸载条件很多,需要满足以下三个条件,并且满足了条件也不一定会被卸载:

  • 该类所有的实例都已经被回收,此时堆中不存在该类的任何实例。
  • 加载该类的 ClassLoader 已经被回收。
  • 该类对应的 Class 对象没有在任何地方被引用,也就无法在任何地方通过反射访问该类方法。

finalize()

类似 C++ 的析构函数(注意:只是类似,C++ 析构函数调用确定,而 finalize() 方法是不确定的),用于关闭外部资源。但是 try-finally 等方式可以做得更好,并且该方法运行代价很高,不确定性大,无法保证各个对象的调用顺序,因此最好不要使用。

当垃圾回收器要宣告一个对象死亡时,至少要经历两次标记过程。

如果对象在进行可达性分析以后,没有与GC Root 直接相连接的引用量,就会被第一次标记,并且判断是否执行 finalize() 方法;

如果这个对象覆盖了 finalize() 方法,并且未被引用,就会被放置于 F-Queue 队列,稍后由虚拟机创建的一个低优先级的 finalize() 线程去执行触发 finalize() 方法,在该方法中让对象重新被引用,从而实现自救。但是该线程的优先级比较低,执行过程随时可能会被终止。此外,自救只能进行一次,如果回收的对象之前调用了 finalize() 方法自救,后面回收时不会再调用该方法。

“标记-清除” 算法

标记清除算法,是将垃圾回收分为2个阶段,分别是标记清除

在标记阶段,从根集合进行扫描,会检查每个对象是否为活动对象,如果是活动对象,则程序会在对象头部打上标记(可达性算法进行标记)。

在清除阶段,会进行对象回收并取消标志位,另外,还会判断回收后的分块与前一个空闲分块是否连续,若连续,会合并这两个分块。回收对象就是把对象作为分块,连接到被称为 “空闲链表” 的单向链表,之后进行分配时只需要遍历这个空闲链表,就可以找到分块。

在分配时,程序会搜索空闲链表寻找空间大于等于新对象大小 size 的块 block。如果它找到的块等于 size,会直接返回这个分块;如果找到的块大于 size,会将块分割成大小为 size 与 (block - size) 的两部分,返回大小为 size 的分块,并把大小为 (block - size) 的块返回给空闲链表。

  • 优点:标记和清除速度较快
  • 缺点:碎片化较为严重,内存不连贯的

”标记-整理“ 算法

标记过程仍然与“标记-清除”算法一样,但后续步骤不是直接对可回收对象回收,而是让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存。

  • 优点:不会产生内存碎片
  • 不足:需要移动大量对象,处理效率比较低。

”复制“ 算法

将内存划分为大小相等的两块,每次只使用其中一块,当这一块内存用完了就将还存活的对象复制到另一块上面,然后再把使用过的内存空间进行一次清理。

主要不足:只使用了内存的一半。

现在的商业虚拟机都采用这种收集算法回收新生代,但是并不是划分为大小相等的两块,而是一块较大的 Eden 空间和两块较小的 Survivor 空间,每次使用 Eden 和其中一块 Survivor。在回收时,将 Eden 和 Survivor 中还存活着的对象全部复制到另一块 Survivor 上,最后清理 Eden 和使用过的那一块 Survivor。

HotSpot 虚拟机的 Eden 和 Survivor 大小比例默认为 8:1,保证了内存的利用率达到 90%。如果每次回收有多于 10% 的对象存活,那么一块 Survivor 就不够用了,此时需要依赖于老年代进行空间分配担保,也就是借用老年代的空间存储放不下的对象。

对后面的内容我也是迷迷糊糊的,就借用网上大神们的总结的知识点画的思维导图给大家了解一下!

概括版视图

http://www.yayakq.cn/news/126934/

相关文章:

  • 桐柏微网站建设3322域名注册
  • 湖南省建设厅网站安卓软件商店安装
  • 商城网站源文件下载西宁网站设计制作公司
  • 房地产网站设计网站维护与建设合同
  • 为什么建设长虹网站阿里轻云wordpress
  • 郑州建设网站公司网页设计教程图片
  • 北京网站制作公司招聘排名优化公司哪里有
  • 响应式网站定制开发建站公司 网络服务
  • 小说网站分页关键字怎么做创新的常州网站建设
  • 常州专门做网站的公司有哪些行业网站特点
  • 网站建设效益分析营销网站制作要素
  • 响应式科技公司网站模板天津网络关键词优化
  • 基础微网站开发代理商群晖搭建wordpress固定链接
  • 网上书店网站建设的说明书新余 网站建站 设计 公司
  • 哪个网站有免费空间北京网站建设加q.479185700
  • 网站程序授权码怎么进入网络管理系统
  • 贵州省铜仁市城乡建设局网站快速搭建网站的方法
  • 做网站每天更新两篇文章酒店网站的规划与建设
  • 北京手机网站建设公司排名app手机网站建设
  • 阿里云做视频网站河西网站建设优化seo
  • 网站404做多大深圳代理记账报税公司
  • 网站建设教程讲解seo综合排名优化
  • 网站建设有前途建设宠物网站的可行性
  • 做汽车的网站好用的wordpress模板
  • 网站源码传到哪个文件夹网站维护与建设
  • 苏州吴中区住房和城乡建设局网站吴江住宅城乡建设局网站
  • 一站式网站建设有哪些wordpress qq微信登陆地址
  • 潍坊网站公司网站编辑工作好做吗
  • 做钓鱼网站判刑自媒体wordpress
  • 网站建设 全包做网站 难