Go语言知识点
2021-05-29 14:37:42 0 举报
Go语言知识点
作者其他创作
大纲/内容
Slice/Map/Sync.map/channel底层
P表示逻辑处理器,对 G 来说,P 相当于 CPU 核,G 只有绑定到 P 才能被调度。对 M 来说,P 提供了相关的执行环境(Context),如内存分配状态(mcache),任务队列(G)等。在runtime中使用 p 结构表示。 最大256 GOPROCS数量
G
M
P
G0
三色标记法 + 写屏障
GPM模型
GC机制
P(逻辑处理器)
M(系统线程)
1.首先把所有的对象都放到白色的集合中2.从根节点开始遍历对象,遍历到的白色对象从白色集合中放到灰色集合中3.遍历灰色集合中的对象,把灰色对象引用的白色集合的对象放入到灰色集合中,同时把遍历过的灰色集合中的对象放到黑色的集合中循环步骤3,知道灰色集合中没有对象 4.结束后,白色集合中的对象就是不可达对象,也就是垃圾,进行回收
Go和PHP的区别?GPM调度模型原理?只有G和M可以吗?Golang垃圾回收机制?Golang 里的逃逸分析是什么?Golang内存泄露有哪些场景?用redis实现一个乐观锁?redis的持久性如何保证,这些方法对用户分别会有什么影响?你所理解的架构师是什么?设计一个打车系统,你要考虑哪些因素,怎么实现?你的项目里的难点?你负责的项目的架构模式?用Go实现一个工厂模式协程池?用Go实现一个生产者、消费者模式?你所知道的Redis中用到的所有的数据结构?排查一个线上问题,你的步骤是?Kafka的吞吐量为什么大?Kafka如何保证消息有序?UDP如何实现可靠传输?
G(协程)
M 是指OS 内核线程,代表着真正执行计算的资源,在绑定有效的 P 后,进入 schedule 循环;而 schedule 循环的机制大致是从 Global 队列、P 的 Local 队列以及 wait 队列中获取。出处。
阻塞队列(获取需要加锁)
0 条评论
下一页