-
golang关于数量的总结
-
锁中处于饥饿状态
- 饥饿状态:(说明g队列中有g程序等待超过1ms)为了解决G队列的长尾效应
- 直接unlock把锁交给等待队列饥饿g
- 新g 不会抢锁,也不自旋,会进入等待队列队尾
- 触发条件 1.g等待超过1ms。2。当前队列只有一个g
-
每个g被连续执行的时间不超过10ms
-
chan
- 元素大小不能超过 64K
- 元素的对齐大小不能超过 maxAlign 也就是 8 字节
-
gc-sysmon 后台监控
- 释放闲置超过5分钟的线程
- 如果两分钟没有进行GC,则强制进行GC
- 将长时间未处理的netpool放入到全局队列
- 像长时间运行的g任务发出进行抢占调度(超过10ms的g会进行retake)
- 收回因syscall超时间阻塞的p
- 默认用1/4的资源进行gc
-
抢占时机
- STW 期间
- 在 P 上执行 safe point 函数期间
- sysmon 后台监控期间
- gc pacer 分配新的 dedicated worker 期间
- panic 崩溃期间
-
内存分配
- page 大小8kb
- sizeclass 最大32768 bytes(mspan的Size Class共有68种,每种mspan分割的object大小是8*2n的倍数)
- mcache用Span Classes作为索引管理多个用于分配的mspan,它包含所有规格的mspan。它是_NumSizeClasses的2倍,也就是68*2=136
- 为什么是两倍:为了加速之后内存回收的速度,数组里一半的mspan中分配的对象不包含指针,另一半则包含指针
- 每个 runtime.heapArena 都会管理 64MB 的内存
- 0-16kb微对象, 16-32 小对象, >32大对象
-
map
- loadFactor := count / (2^B)
- 载因子超过阈值,源码里定义的阈值是 6.5
-
相关阅读:
3D感知(一):初步认识
API 网关 APISIX 在Google Cloud T2A 和 T2D 的性能测试
自定义npm包混淆过滤发布至nexus私服
MySQL定时删除XX天数据
25. Java 锁机制之 Condition 接口
Three.js真实相机畸变效果模拟
使用Qt进行HTTP通信的方法
基于Python实现的遗传算法
若依(ruoyi)开源系统-多数据源问题踩坑实录
3分钟了解Android中稳定性测试
-
原文地址:https://blog.csdn.net/weixin_38805083/article/details/127641993