golang调度、内存管理、反射原理、代码/编译器/cpu之间的关系

前言:首先永远也轮不到你去写golang编译器,系统包等。 如果不是在互联网大厂的的核心基础组件部的最顶尖开发人员,也不需要你对golang语言进行任何的优化,你也没有任何能力去进行优化(尽管面试时很多面试官装一下逼,问你调度和内存管理的问题,都是略懂皮毛炫技用的,实际上用不到的技术就是浪费生命。你需要用到时再去仔细学习,也来得及)。 因此本纯粹是以学习原理为目的。

golang调度原理

golang的携程,在linux线程之上实现了一个私有的调度系统,比线程池更强大,我们分析一下GMP:

在这里插入图片描述

golang内存管理

内存碎片化问题的出现,根本原因是因为内存管理粒度过大。
例如一块豆腐,如果你切成片去分配,有的人需要的块比较大,有的比较小,就会出现浪费。 再例如ipv4的分配机制,就是因为粒度过大,造成有的很饱,有的很饿。 解决办法是用Ipv6,ipv6的特点是编码更多、粒度更小。

c/c++的内容布局
在这里插入图片描述

内存碎片如何产生?
在这里插入图片描述

golang的内存管理机制:
在这里插入图片描述

在这里插入图片描述

代码如何执行,反射原理:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/jacky128256/article/details/120998011
今日推荐