• Golang GC


    Go的垃圾回收官方形容为 非分代 非紧缩 写屏障 三色并发标记清理算法。非分代:不像Java那样分为年轻代和年老代,自然也没有minor gc和maj o gc的区别。非紧缩:在垃圾回收之后不会进行内存整理以清除内存碎片。写屏障:在并发标记的过程中,如果应用程序(mutator)修改了对象图,就可能出现标记遗漏的可能,写屏障就是为了处理标记遗漏的问题。三色:将GC中的对象按照搜索的情况分成三种:
    1. 黑色: 对象在这次GC中已标记,且这个对象包含的子对象也已标记
    2. 灰色: 对象在这次GC中已标记, 但这个对象包含的子对象未标记
    3. 白色: 对象在这次GC中未标记
    4. 并发
    5. :可以和应用程序(mutator)在一定程度上并发执行。
    6. 标记清理
    7. :GC算法分为两个大步骤:标记阶段找出要回收的对象,清理阶段则回收未被标记的对象(要被回收的对象)
    触发时机
    • gcTriggerAlways: 强制触发GC,没找到什么情况下使用这个
    • gcTriggerHeap: 当前分配的内存达到一定值(动态计算)就触发GC
    • gcTriggerTime: 当一定时间(2分钟)没有执行过GC就触发GC
    • gcTriggerCycle: 要求启动新一轮的GC, 已启动则跳过, 手动触发GC的runtime.GC()会使用这个条件
  • 相关阅读:
    py-day2-4 python 集合
    LR_问题_控制器不能使用定义的负载生成器
    LR_问题_无法使用LR的Controller,提示缺少license
    LR_问题_在导入wsdl时出现parsing error
    class, extends和super es6语法
    格式化日期
    CLR
    【sqlserver】批量插入10万数据
    php正则表达式匹配函数
    css overflow
  • 原文地址:https://www.cnblogs.com/tsxylhs/p/15047505.html
Copyright © 2020-2023  润新知