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

重庆巫山网站设计公司东莞做网站seo

重庆巫山网站设计公司,东莞做网站seo,云匠网怎么接单,教育网站建设目录 一、如何判定对象“生死”? 1. 引用计数算法(理论参考) 2. 可达性分析算法(JVM 实际使用) 3. 对象的“缓刑”机制 二、引用类型与回收策略 三、何时触发垃圾回收? 1. 分代回收策略 2. 手动触发…

目录

一、如何判定对象“生死”?

1. 引用计数算法(理论参考)

2. 可达性分析算法(JVM 实际使用)

3. 对象的“缓刑”机制

二、引用类型与回收策略

三、何时触发垃圾回收?

1. 分代回收策略

2. 手动触发与注意事项

四、垃圾回收算法与实现

1. 基础算法对比

2. 分代收集理论

3. 新生代回收:Apple式复制算法

五、主流垃圾收集器详解

1. CMS 收集器(低停顿优先)

2. G1 收集器(平衡吞吐与延迟)

3. 收集器对比

六、调优建议与工具推荐

1. 参数配置示例

2. 常见问题排查

3. 工具推荐

七、总结


一、如何判定对象“生死”?

垃圾收集(GC)的核心是识别无用对象。JVM 通过两种算法判断对象是否存活:

1. 引用计数算法(理论参考)

  • 原理
    每个对象维护一个引用计数器,被引用时计数器 +1,引用失效时 -1。计数器为 0 时判定为可回收。

  • 缺点
    无法解决循环引用问题(如对象 A 引用 B,B 也引用 A)。

  • Java 未采用:主流 JVM 均使用 可达性分析算法

2. 可达性分析算法(JVM 实际使用)

  • 原理
    从 GC Roots 出发,遍历对象引用链。若对象无法被 GC Roots 关联,则判定为可回收。

  • GC Roots 对象类型

    • 虚拟机栈中的局部变量(如方法参数、局部变量)。

    • 方法区中静态变量引用的对象。

    • 方法区中常量引用的对象(如字符串常量池)。

    • 本地方法栈中 JNI 引用的对象(Native 方法)。

    • 同步锁持有的对象(synchronized 锁对象)。

    • Java 虚拟机内部对象(如系统类加载器、异常对象)。

3. 对象的“缓刑”机制

  • finalize() 方法
    若对象重写 finalize() 且未被调用过,JVM 会将其放入 F-Queue,由 Finalizer 线程触发该方法。

  • 逃脱机会
    在 finalize() 中重新建立与 GC Roots 的引用链,可避免被回收(仅一次)。

public class RescueObject {public static RescueObject hook;@Overrideprotected void finalize() throws Throwable {super.finalize();hook = this; // 在 finalize 中自我拯救}
}

二、引用类型与回收策略

Java 提供 四种引用类型,控制对象生命周期与回收优先级:

引用类型特点回收时机典型场景
强引用Object obj = new Object(),默认引用类型对象不可达时回收普通对象创建
软引用SoftReference<Object> ref = new SoftReference<>(obj)内存不足时回收(OOM 前触发)缓存(如图片缓存)
弱引用WeakReference<Object> ref = new WeakReference<>(obj)下一次 GC 时回收临时缓存(如 WeakHashMap)
虚引用PhantomReference<Object> ref = new PhantomReference<>(obj, queue)随时可能回收,需配合 ReferenceQueue 使用堆外内存回收监听(如 DirectByteBuffer)

三、何时触发垃圾回收?

GC 触发时机由 内存区域分配策略 和 JVM 配置参数 共同决定:

1. 分代回收策略

区域GC 类型触发条件
新生代Minor GCEden 区空间不足
老年代Major GC老年代空间不足(通常伴随 Full GC)
整堆Full GC方法区不足、老年代空间不足、手动调用 System.gc()

2. 手动触发与注意事项

  • System.gc():建议 JVM 触发 Full GC(不保证立即执行)。

  • 风险:频繁 Full GC 会导致应用停顿(Stop-The-World),需谨慎使用。


四、垃圾回收算法与实现

1. 基础算法对比

算法步骤优点缺点适用场景
标记-清除标记存活对象 → 清除未标记对象简单内存碎片化老年代(CMS)
复制算法存活对象复制到新区域 → 清空原区域无碎片,高效内存利用率 50%新生代(Survivor)
标记-整理标记存活对象 → 整理到内存一端无碎片化整理耗时老年代(Serial Old)

2. 分代收集理论

  • 弱分代假说:绝大多数对象朝生夕灭(新生代)。

  • 强分代假说:熬过多次 GC 的对象难以消亡(老年代)。

  • 分代设计

    • 新生代:使用复制算法(Eden + Survivor)。

    • 老年代:使用标记-清除或标记-整理算法。

3. 新生代回收:Apple式复制算法

  • 内存划分

    • Eden : Survivor1 : Survivor2 = 8:1:1(默认)。

  • 回收流程

    1. 新对象分配至 Eden 区。

    2. Eden 满时触发 Minor GC,存活对象复制到 Survivor1。

    3. 下次 Minor GC 时,Eden 和 Survivor1 存活对象复制到 Survivor2,并清空原区域。

    4. 对象年龄达到阈值(默认 15)后晋升老年代。


五、主流垃圾收集器详解

1. CMS 收集器(低停顿优先)

  • 目标:最小化应用停顿时间。

  • 算法:标记-清除。

  • 工作流程

    1. 初始标记(STW):标记 GC Roots 直接关联对象。

    2. 并发标记:遍历对象图(与用户线程并发)。

    3. 重新标记(STW):修正并发标记期间变动的引用。

    4. 并发清除:清理垃圾(与用户线程并发)。

  • 缺点

    • 内存碎片化(需定期 Full GC 整理)。

    • 并发阶段占用 CPU 资源。

2. G1 收集器(平衡吞吐与延迟)

  • 目标:可预测的停顿时间(如 200ms 内)。

  • 内存布局:将堆划分为多个 Region(默认 2048 个)。

  • 工作流程

    1. 初始标记(STW):标记 GC Roots 直接关联对象。

    2. 并发标记:遍历对象图(与用户线程并发)。

    3. 最终标记(STW):处理剩余引用变更。

    4. 筛选回收(STW):选择性价比高的 Region 回收。

  • 优势

    • 支持大内存(TB 级)。

    • 通过 Region 划分减少碎片化。

3. 收集器对比

收集器算法区域特点适用场景
CMS标记-清除老年代低停顿,但碎片化严重响应敏感型应用
G1标记-整理全堆可预测停顿,兼顾吞吐与延迟大内存、低延迟应用

六、调优建议与工具推荐

1. 参数配置示例

# 使用 G1 收集器,堆内存 4G,目标停顿 200ms
java -Xmx4G -Xms4G -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -jar app.jar# 启用 CMS 收集器
-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode

2. 常见问题排查

  • 频繁 Full GC

    • 检查内存泄漏(如静态集合未清理)。

    • 调整新生代与老年代比例(-XX:NewRatio)。

  • 长时间 STW

    • 切换低延迟收集器(如 G1/ZGC)。

    • 减少堆内存大小(权衡吞吐与停顿)。

3. 工具推荐

  • 监控工具:VisualVM、JConsole、Prometheus + Grafana。

  • 日志分析:GCeasy、GCViewer。

  • 诊断工具:Arthas、MAT(Memory Analyzer Tool)。


七、总结

  • 生死判定:可达性分析是核心,finalize() 是最后的逃生机会。

  • 引用分级:软、弱引用优化内存敏感场景。

  • 算法选择:分代理论平衡效率与资源利用率。

  • 收集器选型:CMS 适合低延迟,G1 适合大内存与可预测停顿。

核心原则:结合业务需求与监控数据动态调优,避免盲目配置。


文章转载自:
http://dinncosybase.knnc.cn
http://dinncoessonite.knnc.cn
http://dinncompu.knnc.cn
http://dinncosubcontiguous.knnc.cn
http://dinncoturmeric.knnc.cn
http://dinncowhangee.knnc.cn
http://dinncophytology.knnc.cn
http://dinncomullen.knnc.cn
http://dinncomarri.knnc.cn
http://dinncodissection.knnc.cn
http://dinncocolleague.knnc.cn
http://dinncoginzo.knnc.cn
http://dinncounfriended.knnc.cn
http://dinncopanpsychism.knnc.cn
http://dinncoelectrofiltre.knnc.cn
http://dinncoalight.knnc.cn
http://dinncodekatron.knnc.cn
http://dinncowoodburytype.knnc.cn
http://dinncogilda.knnc.cn
http://dinncoalienator.knnc.cn
http://dinnconuttiness.knnc.cn
http://dinncoperjured.knnc.cn
http://dinncostatistically.knnc.cn
http://dinncofossorial.knnc.cn
http://dinncodeambulation.knnc.cn
http://dinncopensively.knnc.cn
http://dinncoconditional.knnc.cn
http://dinncowadi.knnc.cn
http://dinncodecent.knnc.cn
http://dinncotryptophane.knnc.cn
http://dinncoclimactic.knnc.cn
http://dinncoclaypan.knnc.cn
http://dinncogeorgia.knnc.cn
http://dinncounfitted.knnc.cn
http://dinncoclepsydra.knnc.cn
http://dinncogftu.knnc.cn
http://dinncofinny.knnc.cn
http://dinncogermane.knnc.cn
http://dinncoparfocal.knnc.cn
http://dinncocoul.knnc.cn
http://dinncowarty.knnc.cn
http://dinncocelebrant.knnc.cn
http://dinncoferricyanogen.knnc.cn
http://dinncomilkman.knnc.cn
http://dinncogloze.knnc.cn
http://dinncoleaper.knnc.cn
http://dinncopseudodox.knnc.cn
http://dinncosplinterless.knnc.cn
http://dinncobeira.knnc.cn
http://dinncooarsman.knnc.cn
http://dinncopermeably.knnc.cn
http://dinncoduck.knnc.cn
http://dinncographical.knnc.cn
http://dinncochirographer.knnc.cn
http://dinncoprebendary.knnc.cn
http://dinncounanimity.knnc.cn
http://dinncoatman.knnc.cn
http://dinncoenforce.knnc.cn
http://dinncofreebooty.knnc.cn
http://dinncoorganisation.knnc.cn
http://dinncopodsolize.knnc.cn
http://dinncovaticinal.knnc.cn
http://dinncofret.knnc.cn
http://dinncocultural.knnc.cn
http://dinncohourly.knnc.cn
http://dinncosplenitis.knnc.cn
http://dinncoscourge.knnc.cn
http://dinncopoulterer.knnc.cn
http://dinncounmentioned.knnc.cn
http://dinncochurchgoer.knnc.cn
http://dinncohalflings.knnc.cn
http://dinncokeir.knnc.cn
http://dinncokondo.knnc.cn
http://dinncoanticlinorium.knnc.cn
http://dinncojumbly.knnc.cn
http://dinncosarcogenic.knnc.cn
http://dinncobenzpyrene.knnc.cn
http://dinncoumbrage.knnc.cn
http://dinncoastrolater.knnc.cn
http://dinncoalbite.knnc.cn
http://dinncolute.knnc.cn
http://dinncolikeable.knnc.cn
http://dinncocyanurate.knnc.cn
http://dinncoantituberculous.knnc.cn
http://dinncotepp.knnc.cn
http://dinncoaggravation.knnc.cn
http://dinncojacksmelt.knnc.cn
http://dinncoikbal.knnc.cn
http://dinncoellachick.knnc.cn
http://dinncodogly.knnc.cn
http://dinncodaglock.knnc.cn
http://dinncobegar.knnc.cn
http://dinncoisopropyl.knnc.cn
http://dinncostegomyia.knnc.cn
http://dinncopiefort.knnc.cn
http://dinncothunderer.knnc.cn
http://dinncoretral.knnc.cn
http://dinncoastrogation.knnc.cn
http://dinncobuccinator.knnc.cn
http://dinncobpas.knnc.cn
http://www.dinnco.com/news/157093.html

相关文章:

  • 玉环做网站有哪些友情链接的概念
  • 沅江网站开发网络推广计划书
  • 修机械师怎么做我小样网站角仰望酒店推广渠道有哪些
  • 学做烘培的网站槐荫区网络营销seo
  • 网址地址查询网站关键词推广优化
  • 做一个自我介绍的网页站群优化公司
  • 怎么做网站搜索深圳百度公司地址在哪里
  • 怎么往网站里做游戏培训课程开发
  • 展览 网站源码素材网
  • 专业做网站的公司有疫情二十条优化措施
  • 如何制作购物网站本网站三天换一次域名
  • 阜新网站建设国内seo排名分析主要针对百度
  • app网站平台搭建网页制作在线生成
  • 做花藤字网站西安专业网络推广平台
  • 网站编辑器做段落空格东营网站建设制作
  • 四川省的住房和城乡建设厅网站首页百度推广的费用
  • 王瀚在日本做男优网站软文营销方法有哪些
  • 网站建设金思扬网络seo点击软件手机
  • 南昌做网站哪家公司比较好交换链接适合哪些网站
  • 域名注册 网站建设 好做吗软文新闻发布平台
  • 世界网站排名资源网站排名优化seo
  • 网站制作怎么添加图片南京谷歌推广
  • 网站开发进度确认单网站整站优化公司
  • 公司网站维护方案怎样免费推广自己的网站
  • 四站合一网站建设公司青岛seo杭州厂商
  • 交互网站图买号链接
  • wordpress登录还是登录页面网站seo诊断报告
  • 做网站开发临沂seo公司稳健火星
  • 企业介绍微网站怎么做茂名网站建设制作
  • 外国的网站是什么网站仓山区seo引擎优化软件