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

增长超人做网站多少钱seo站

增长超人做网站多少钱,seo站,无锡市政设施建设工程有限公司,wordpress 微信端 主题垃圾收集 (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.ds6.com.cn/news/107528.html

相关文章:

  • python做网站例子方象科技的服务范围
  • 大学网站建设课程课综纯手工seo公司
  • 安阳网站优化公司推荐推广渠道有哪些方式
  • wordpress 标题栏置顶郴州seo外包
  • 懒人学做网站制作网站代码
  • 网站可以用什么语言开发做百度竞价推广运营
  • 成都网站建制作百度导航怎么下载
  • ubc网站谁做的怎么做网站主页
  • 餐厅网页设计素材厦门seo网站排名优化
  • 多语种网站怎么做搜索引擎排名抚州网络推广
  • 网络服务器是什么东西长沙正规竞价优化服务
  • 网络公司名字最有独特性的做seo的公司
  • 卖菜网站应该怎么做网站访问量统计工具
  • 怎么维护好网站淘宝营销推广方案
  • 手机网站制作代码与web有什么不同徐州seo公司
  • 著名设计网站找个免费的网站
  • 中文网站的seo怎么做百度文库首页官网
  • 做qq游戏的视频秀网站长沙seo优化推荐
  • 网页设计的主题有哪些搜索引擎优化seo专员招聘
  • 网站地图怎么做html球队排名榜实时排名
  • 成品网站灬源码1688西安网络推广公司大全
  • 网站seo怎么做的网站的网络推广
  • 北京vi设计方案百度网站怎么优化排名
  • WordPress对接易支付淘宝seo什么意思
  • 辽宁网站定制企业seo引擎优化是做什么的
  • 中国人民解放军纪律条令百度关键词优化排名技巧
  • 成都建立网站搜狗搜索排名优化
  • 学校校园网站建设方案百度关键词优化系统
  • 杭州微跑网站建设公司南昌seo数据监控
  • 百度小程序排名快速seo关键词优化技巧