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

天津seo公司网站中国机械加工网站

天津seo公司网站,中国机械加工网站,网站title字数,wordpress页面模板目录文件为什么要有垃圾回收? JVM之所以要有垃圾回收,是因为它能够自动管理内存,避免内存泄漏和内存溢出的问题,垃圾回收机制会自动检测和清理不再使用的对象,释放内存空间,使得开发者不需要手动管理内存,降低了开发难度和错误风险,同时,垃圾回收还可以优化内存分配,提高程序性能和响…

为什么要有垃圾回收?

JVM之所以要有垃圾回收,是因为它能够自动管理内存,避免内存泄漏和内存溢出的问题,垃圾回收机制会自动检测和清理不再使用的对象,释放内存空间,使得开发者不需要手动管理内存,降低了开发难度和错误风险,同时,垃圾回收还可以优化内存分配,提高程序性能和响应速度,总之,垃圾回收是JVM不可或缺的重要功能之一

垃圾回收主要回收哪个内存区域?

因为对于程序计数器,虚拟机栈和方法区来说,生命周期都与线程有关,随线程而生,随线程而灭 并且这三个区域的内存分配和回收是具有确定性的,当方法结束或者线程结束的时候,内存就会被自动回收,所以,我们需要考虑的就只有堆内存,也叫做GC堆

标记的过程

Java堆中存放着几乎所有的对象实例,垃圾回收器在对堆进行垃圾回收前,首先要判断这些对象哪些还存活,哪些已经"死去"。判断对象是否已"死"有如下几种算法

引用计数法

在给一个对象分配内存的时候,会给他增加一个计数器,每当有一个引用指向该对象的时候,计数器就会+1,当引用失效的时候,计数器就会-1,任何时候,只要当计数器为0时,该对象就已经不能再使用,也就相当于对象已死
但是主流的JVM并没有采取这种方法,因为这种方法可能会引起循环引用的问题

可达性分析算法

此算法的核心思想为 : 通过一系列称为"GC Roots"的对象作为起始点,从这些节点开始向下搜索,搜索走过的路径称之为"引用链",当一个对象到GC Roots没有任何的引用链相连时(从GC Roots到这个对象不可达)时,证明此对象是不可用的
在Java语言中,可作为GC Roots的对象包含下面几种:

  1. 虚拟机栈(栈帧中的本地变量表)中引用的对象;
  2. 方法区中类静态属性引用的对象;
  3. 方法区中常量引用的对象;
  4. 本地方法栈中 JNI(Native方法)引用的对象。

回收的过程

标记-清除算法

标记-清除算法是最基础的收集算法,算法分为"标记"和"清除"两个阶段:首先标记出所有需要回收的对象,在标记完成后,统一对标记后的对象进行回收,后续算法都是基于该算法进行优化
标记:
在这里插入图片描述
清除:

在这里插入图片描述

缺点:
效率:标记和清除的效率都不太高
空间:标记清除后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行中需要分配较大对象时,无法找到足够连续内存而不得不提前触发另一次垃圾收集

复制算法

"复制"算法是为了解决"标记-清理"的效率问题。它将可用内存按容量划分为大小相等的两块,每次只使用其中的一块。当这块内存需要进行垃圾回收时,会将此区域还存活着的对象复制到另一块上面,然后再把已经使用过的内存区域一次清理掉。这样做的好处是每次都是对整个半区进行内存回收,内存分配时也就不需要考虑内存碎片等复杂情况,只需要移动堆顶指针,按顺序分配即可。此算法实现简单,运
行高效
在这里插入图片描述

复制收集算法在对象存活率较高时会进行比较多的复制操作,效率会变低。因此在老年代一般不能使用复制算法

标记-整理算法

针对老年代的特点,提出了一种称之为"标记-整理算法"。标记过程仍与"标记-清除"过程一致,但后续步骤不是直接对可回收对象进行清理,而是让所有存活对象都向一端移动,然后直接清理掉端边界以外的内存
在这里插入图片描述

分代算法

分代算法和上面讲的 3 种算法不同,分代算法是通过区域划分,实现不同区域和不同的垃圾回收策略,从而实现更好的垃圾回收。这就好比中国的一国两制方针一样,对于不同的情况和地域设置更符合当地的规则,从而实现更好的管理,这就是分代算法的设计思想
当前 JVM 垃圾收集都采用的是"分代收集(Generational Collection)"算法,这个算法并没有新思想,只是根据对象存活周期的不同将内存划分为几块。一般是把Java堆分为新生代和老年代。在新生代中,每次垃圾回收都有大批对象死去,只有少量存活,因此我们采用复制算法;而老年代中对象存活率高、没有额外空间对它进行分配担保,就必须采用"标记-清理"或者"标记-整理"算法。
哪些对象会进入新生代?哪些对象会进入老年代?
新生代:一般创建的对象都会进入新生代;
老年代:大对象和经历了 N 次(一般情况默认是 15 次)垃圾回收依然存活下来的对象会从新生代移动到老年代
幸存区的两块区域,每次只用一个,每次检查其中一块区域的对象释放被淘汰,如果未被淘汰,就转入另一块幸存区,直到满足进入老年区的条件
在这里插入图片描述

垃圾回收器有哪些典型实现?

  1. Serial收集器(新生代收集器,串行GC)
  2. ParNew收集器(新生代收集器,并行GC)
  3. Parallel Scavenge收集器(新生代收集器,并行GC)
  4. Serial Old收集器(老年代收集器,串行GC)
  5. Parallel Old收集器(老年代收集器,并行GC)
  6. CMS收集器(老年代收集器,并发GC)
  7. G1收集器(唯一一款全区域的垃圾回收器)
http://www.yayakq.cn/news/941133/

相关文章:

  • 学工系统网站建设的意义网站建设方案ppt模板
  • 网站建设要用到哪些应用工具广西南宁最新消息新闻
  • 元隆盛建设集团有限公司网站网页制作外包
  • 来宾绍兴seo网站托管方案做菠菜网站代理
  • 织梦做信息类网站wordpress 死钥链接
  • 做家教网站如何招生信息流优化师怎么入行
  • 网站留言系统 提交没反应网络网站是多少钱一年
  • 网站空间哪个好赣州兼职网站建设
  • 如何优化网站关键词排名展示型网站案例
  • 谷歌推广外贸建站建一个全部由自己控制的网站需要多少钱
  • django 开发一个公司网站广东省网站备案查询
  • 营销型网站建设规划书wordpress 退出登录
  • 网站基本配置微信公众号网页制作
  • 做浏览单的网站河南中恒诚信建设有限公司网站
  • 网站建设项目经理考题简易购物网站前端模板
  • 南宁网站设计浙江重大工程交易网
  • 做网站英文怎么写个人简介网页怎么做
  • 湖北高企达建设有限公司网站网站制作算什么费用
  • 有关网站建设的参考书手机如何强制下载网页视频
  • 门户网站备案西安行业网站
  • 做平台网站怎么做wordpress 当前主题
  • o2o网站建设价格洛阳网站建设兼职
  • 源码网站模板企业网络费用一年多少钱
  • 深圳品牌网站设计推广湛江市建设局官网站
  • 网站建设 安庆天猫网站平面广告
  • 作品展示html5网站模板赤峰网站策划
  • 婚纱网站php品牌型网站建设方案
  • 微信上可以做网站吗wordpress插件文件夹在哪
  • 宿州城市建设投资网站线上商城推广软文
  • 贵阳网站建设需要多少钱怎么让百度收录网站所有网页