当前位置: 首页 > news >正文 电商网站设计的企业兰州网络推广 news 2025/10/27 2:44:48 电商网站设计的企业,兰州网络推广,湖北最专业的公司网站建设平台,郑州便宜网站建设公司文章目录 1. 垃圾回收概述及算法2. 垃圾回收相关算法2.1 标记阶段#xff1a;引用计数算法2.2 标记阶段#xff1a;可达性分析算法2.3 对象的 finalization 机制2.3.1 一个对象是否可回收的判断 2.4 清除阶段#xff1a;标记-清除算法2.5 清除阶段#xff1a;复制算法2.6 清… 文章目录 1. 垃圾回收概述及算法2. 垃圾回收相关算法2.1 标记阶段引用计数算法2.2 标记阶段可达性分析算法2.3 对象的 finalization 机制2.3.1 一个对象是否可回收的判断 2.4 清除阶段标记-清除算法2.5 清除阶段复制算法2.6 清除阶段标记-压缩整理算法2.7 小结 1. 垃圾回收概述及算法 什么是垃圾 垃圾是指在运行程序中没有任何指针指向的对象这个对象就是需要被回收的垃圾。 如果不及时对内存中的垃圾进行清理那么这些垃圾对象所占的内存空间会一直保留到应用程序的结束被保留的空间无法被其它对象使用甚至可能导致内存溢出。 Java 垃圾回收机制:自动内存管理无需开发人员手动参与内存的分配与回收这样降低内存泄漏和内存溢出的风险 GC 主要关注的区域GC 主要关注于方法区 和堆中的垃圾收集 频繁收集 Young 区较少收集 Old 区基本不收集 Perm 区元空间 2. 垃圾回收相关算法 对象存活判断引用计数算法和可达性分析算法。 2.1 标记阶段引用计数算法 对每个对象保存一个整型的引用计数器属性。用于记录对象被引用的情况。 对于一个对象 A只要有任何一个对象引用了 A则 A 的引用计数器就加 1当引用失效时引用计数器就减 1。只要对象 A 的引用计数器的值为 0即表示对象 A 不可能再被使用可进行回收。 优点 实现简单垃圾对象便于辨识判定效率高回收没有延迟性。 缺点 它需要单独的字段存储计数器这样的做法增加了存储空间的开销。每次赋值都需要更新计数器伴随着加法和减法操作这增加了时间开销。引用计数器有一个严重的问题即无法处理循环引用的情况。这是一条致命缺陷导致在 Java 的垃圾回收器中没有使用这类算法。 2.2 标记阶段可达性分析算法 该算法可以有效地解决在引用计数算法中循环引用的问题防止内存泄漏的发生。 基本思路: 可达性分析算法是以根对象集合GCRoots为起始点按照从上至下的方式搜索被根对象集合所连接的目标对象是否可达。 如果目标对象没有任何引用链相连则是不可达的就意味着该对象己经死亡可以标记为垃圾对象。 在 Java 语言中GC Roots 包括以下几类元素 虚拟机栈局部变量表中引用的对象本地方法栈内 JNI通常说的本地方法引用的对象方法区中类静态属性引用的对象方法区中常量引用的对象 比如字符串常量池String Table里的引用 所有被同步锁 synchronized 持有的对象Java 虚拟机内部的引用。 基本数据类型对应的 Class 对象一些常驻的异常对象如NullPointerException、OutOfMemoryError系统类加载器。 反映 java 虚拟机内部情况的 JMXBean、JVMTI 中注册的回调、本地代码缓存等。 分代收集和局部回收PartialGC 只针对 Java 堆中的某一块区域进行垃圾回收比如典型的只针对新生代 注意 如果要使用可达性分析算法来判断内存是否可回收那么分析工作必须在一个能保障一致性的快照中进行。这点不满足的话分析结果的准确性就无法保证。 这点也是导致 GC 进行时必须“stop The World”的一个重要原因。 即使是号称几乎不会发生停顿的 CMS 收集器中枚举根节点时也是必须要停顿的。 2.3 对象的 finalization 机制 finalization机制来允许开发人员提供对象被销毁之前的自定义处理逻辑。 当垃圾回收器发现没有引用指向一个对象即垃圾回收此对象之前总会先调用这个对象的 finalize()方法。 finalize() 方法允许在子类中被重写用于在对象被回收时进行资源释放。通常在这个方法中进行一些资源释放和清理的工作比如关闭文件、套接字和数据库连接等。 2.3.1 一个对象是否可回收的判断 虚拟机中的对象可能的三种状态 可触及的从根节点开始可以到达这个对象。可复活的对象的所有引用都被释放但是对象有可能在 finalize()中复活。不可触及的对象的 finalize()被调用并且没有复活那么就会进入不可触及状态。不可触及的对象不可能被复活因为finalize()只会被调用一次。 判定一个对象 objA 是否可回收至少要经历两次标记过程 如果对象 objA 到 GC Roots 没有引用链则进行第一次标记。进行筛选判断此对象是否有必要执行 finalize()方法如果对象 objA 没有重写 finalize()方法或者 finalize()方法已经被虚拟机调用过则虚拟机视为“没有必要执行”objA 被判定为不可触及的。如果对象 objA 重写了 finalize()方法且还未执行过那么 objA 会被插入到 F-Queue 队列中由一个虚拟机自动创建的、低优先级的 Finalizer 线程触发其 finalize()方法执行。finalize()方法是对象逃脱死亡的最后机会稍后 GC 会对 F-Queue 队列中的对象进行第二次标记。如果 objA 在 finalize()方法中与引用链上的任何一个对象建立了联系那么在第二次标记时objA 会被移出“即将回收”集合。 2.4 清除阶段标记-清除算法 当成功区分出内存中存活对象和死亡对象后GC 接下来的任务就是执行垃圾回收释放掉无用对象所占用的内存空间以便有足够的可用内存空间为新对象分配内存。 目前在 JVM 中比较常见的三种垃圾收集算法标记一清除算法Mark-Sweep、复制算法copying、标记-压缩算法Mark-Compact 标记-清除算法Mark-Sweep: 当堆中的有效内存空间available memory被耗尽的时候就会停止整个程序也被称为 stop the world然后进行两项工作第一项则是标记第二项则是清除 标记Collector 从引用根节点开始遍历标记所有被引用的对象。一般是在对象的 Header 中记录为可达对象。清除Collector 对堆内存从头到尾进行线性的遍历如果发现某个对象在其 Header 中没有标记为可达对象则将其回收 何为清除 这里所谓的清除并不是真的置空而是把需要清除的对象地址保存在空闲的地址列表里。下次有新对象需要加载时判断垃圾的位置空间是否够如果够就存放覆盖原有的地址。 缺点 标记清除算法的效率不算高在进行 GC 的时候需要停止整个应用程序用户体验较差这种方式清理出来的空闲内存是不连续的产生内存碎片需要维护一个空闲列表 2.5 清除阶段复制算法 将活着的内存空间分为两块每次只使用其中一块在垃圾回收时将正在使用的内存中的存活对象复制到未被使用的内存块中之后清除正在使用的内存块中的所有对象交换两个内存的角色最后完成垃圾回收 优点 没有标记和清除过程实现简单运行高效复制过去以后保证空间的连续性不会出现“碎片”问题。 缺点 此算法的缺点也是很明显的就是需要两倍的内存空间。对于 G1 这种分拆成为大量 region 的 GC复制而不是移动意味着 GC 需要维护 region 之间对象引用关系不管是内存占用或者时间开销也不小(因为堆中对象换地方了所有引用此对象的引用地址都需要变) 应用场景 在新生代的垃圾回收一次通常可以回收 70% - 99% 的内存空间。回收性价比很高。所以现在的商业虚拟机都是用这种收集算法回收新生代。 2.6 清除阶段标记-压缩整理算法 第一阶段和标记清除算法一样从根节点开始标记所有被引用对象第二阶段将所有的存活对象压缩到内存的一端按顺序排放。之后清理边界外所有的空间。 标记-压缩算法的最终效果等同于标记-清除算法执行完成后再进行一次内存碎片整理因此也可以把它称为标记-清除-压缩Mark-Sweep-Compact算法。 优点 消除了标记-清除算法当中内存区域分散的缺点我们需要给新对象分配内存时JVM 只需要持有一个内存的起始地址即可。消除了复制算法当中内存减半的高额代价。 缺点 从效率上来说标记-整理算法要低于复制算法。移动对象的同时如果对象被其他对象引用则还需要调整引用的地址移动过程中需要全程暂停用户应用程序。即STW 2.7 小结 文章转载自: http://www.morning.qhjkz.cn.gov.cn.qhjkz.cn http://www.morning.zmnyj.cn.gov.cn.zmnyj.cn http://www.morning.qnhcx.cn.gov.cn.qnhcx.cn http://www.morning.krdmn.cn.gov.cn.krdmn.cn http://www.morning.psxwc.cn.gov.cn.psxwc.cn http://www.morning.fkrzx.cn.gov.cn.fkrzx.cn http://www.morning.xqbgm.cn.gov.cn.xqbgm.cn http://www.morning.kwqwp.cn.gov.cn.kwqwp.cn http://www.morning.gkktj.cn.gov.cn.gkktj.cn http://www.morning.reababy.com.gov.cn.reababy.com http://www.morning.ctqbc.cn.gov.cn.ctqbc.cn http://www.morning.drndl.cn.gov.cn.drndl.cn http://www.morning.yqqgp.cn.gov.cn.yqqgp.cn http://www.morning.fypgl.cn.gov.cn.fypgl.cn http://www.morning.coffeedelsol.com.gov.cn.coffeedelsol.com http://www.morning.ybnzn.cn.gov.cn.ybnzn.cn http://www.morning.tjmfz.cn.gov.cn.tjmfz.cn http://www.morning.wmfr.cn.gov.cn.wmfr.cn http://www.morning.mjbnp.cn.gov.cn.mjbnp.cn http://www.morning.gpxbc.cn.gov.cn.gpxbc.cn http://www.morning.jrqw.cn.gov.cn.jrqw.cn http://www.morning.jjpk.cn.gov.cn.jjpk.cn http://www.morning.mzskr.cn.gov.cn.mzskr.cn http://www.morning.qprtm.cn.gov.cn.qprtm.cn http://www.morning.qkrzn.cn.gov.cn.qkrzn.cn http://www.morning.hbqfh.cn.gov.cn.hbqfh.cn http://www.morning.dpdns.cn.gov.cn.dpdns.cn http://www.morning.knzmb.cn.gov.cn.knzmb.cn http://www.morning.rgsgk.cn.gov.cn.rgsgk.cn http://www.morning.ktrzt.cn.gov.cn.ktrzt.cn http://www.morning.jrplk.cn.gov.cn.jrplk.cn http://www.morning.kmwbq.cn.gov.cn.kmwbq.cn http://www.morning.qrqdr.cn.gov.cn.qrqdr.cn http://www.morning.txmlg.cn.gov.cn.txmlg.cn http://www.morning.cwwts.cn.gov.cn.cwwts.cn http://www.morning.jxzfg.cn.gov.cn.jxzfg.cn http://www.morning.rqxmz.cn.gov.cn.rqxmz.cn http://www.morning.bpmdr.cn.gov.cn.bpmdr.cn http://www.morning.bfycr.cn.gov.cn.bfycr.cn http://www.morning.dbqg.cn.gov.cn.dbqg.cn http://www.morning.gsksm.cn.gov.cn.gsksm.cn http://www.morning.kpcxj.cn.gov.cn.kpcxj.cn http://www.morning.qfkdt.cn.gov.cn.qfkdt.cn http://www.morning.rdpps.cn.gov.cn.rdpps.cn http://www.morning.bqppr.cn.gov.cn.bqppr.cn http://www.morning.rzcfg.cn.gov.cn.rzcfg.cn http://www.morning.ryrpq.cn.gov.cn.ryrpq.cn http://www.morning.rgrys.cn.gov.cn.rgrys.cn http://www.morning.myzfz.com.gov.cn.myzfz.com http://www.morning.krhkn.cn.gov.cn.krhkn.cn http://www.morning.rscrj.cn.gov.cn.rscrj.cn http://www.morning.ksqzd.cn.gov.cn.ksqzd.cn http://www.morning.ryzgp.cn.gov.cn.ryzgp.cn http://www.morning.nqyzg.cn.gov.cn.nqyzg.cn http://www.morning.ytrbq.cn.gov.cn.ytrbq.cn http://www.morning.hghhy.cn.gov.cn.hghhy.cn http://www.morning.ykklw.cn.gov.cn.ykklw.cn http://www.morning.mpngp.cn.gov.cn.mpngp.cn http://www.morning.czgtt.cn.gov.cn.czgtt.cn http://www.morning.kzdgz.cn.gov.cn.kzdgz.cn http://www.morning.cjrmf.cn.gov.cn.cjrmf.cn http://www.morning.zdqsc.cn.gov.cn.zdqsc.cn http://www.morning.ktmbr.cn.gov.cn.ktmbr.cn http://www.morning.zfhwm.cn.gov.cn.zfhwm.cn http://www.morning.trplf.cn.gov.cn.trplf.cn http://www.morning.djxnw.cn.gov.cn.djxnw.cn http://www.morning.rkfxc.cn.gov.cn.rkfxc.cn http://www.morning.kpypy.cn.gov.cn.kpypy.cn http://www.morning.nfzw.cn.gov.cn.nfzw.cn http://www.morning.hous-e.com.gov.cn.hous-e.com http://www.morning.ygwbg.cn.gov.cn.ygwbg.cn http://www.morning.mdgpp.cn.gov.cn.mdgpp.cn http://www.morning.fkwp.cn.gov.cn.fkwp.cn http://www.morning.pflry.cn.gov.cn.pflry.cn http://www.morning.klcdt.cn.gov.cn.klcdt.cn http://www.morning.pjtw.cn.gov.cn.pjtw.cn http://www.morning.ysqb.cn.gov.cn.ysqb.cn http://www.morning.rbjp.cn.gov.cn.rbjp.cn http://www.morning.ycwym.cn.gov.cn.ycwym.cn http://www.morning.hsflq.cn.gov.cn.hsflq.cn 查看全文 http://www.tj-hxxt.cn/news/252675.html 相关文章: 怎么找网站的后台地址设计企业网络方案的五个步骤 关于班组建设管理的网站上海国际人力资源开发公司 门户网站模板 免费网站建设简单个人主页 帮做试卷的网站网站建设网页设计师 桂林山水甲天下杭州网站优化排名 商城网站后台管理系统arvixe wordpress 网站发布平台外贸wordpress 门户网站 模板之家百度排行 信息流广告哪个平台好网站seo设置 贵港网站建设公司一键搭建的wordpress数据库怎么看 大连网站开发工资长沙品牌设计 好听的网站名称在线识别图片找原图 响应式中文网站模板阿里云备案后 增加网站 爱网站搭建营销网站建设公司 做网站团队北京做网站最牛的公司 网页游戏网站7中文html网站模板下载 国外企业查询网站固镇网站建设 深圳微商城网站设计公司一个基于php网站开发课题设计的业务流程描述 免费个人网站网站建设CEO 网上接网站做网站开发 js 网站在建设中网络前端开发招聘 教育门户网站设计欣赏最好免费观看高清视频直播小说 一级a视网站 做爰片广州南沙建设和交通局网站 营销型网站建设的价格网上商城系统开发 有哪些好的响应式网站网站建好了 如何推广 做网站 带宽 多少设计类专业笔记本电脑推荐 广元市建设局网站首页重庆网站建设多少钱 苏州城乡建设网站查询找国外客户用哪个平台 厦门的企业网站大气企业网站源码php 有没有兼职做网站的wordpress和python