Go 语言进阶--基础概念

作者: 邹志全 | 来源:发表于2019-07-10 22:50 被阅读19次

本系列文章到现在已经将Go非常基础的部分介绍完成了,后面就开始设计非常具有Go特色的内容了,因为之后会出现一系列的名词和概念,为了方便本篇先把这些基础概念和我的理解阐述一下。
首先Go是一门编译型语言,编译时产生一份本地可执行代码,但是这些代码其实是执行在go 的runtime上的。

runtime

runtime 可以大致理解为是Java中的虚拟机或者是一个调度器,主要负责管理内存分配、垃圾回收、栈操作、goroutine、channel、slice、反射等。

内存管理

Go 语言同Java类似帮助我们去管理内存,而不是C那样程序员自行管理。内存管理主要包含 内存分配、垃圾回收 两大部分:
内存分配器主要负责栈内存的分配及小对象的分配(小于32k的对象)。其中小对象的分配是通过多级cache 来实现的。

垃圾回收

go 的垃圾回收是一种非分代的、非紧锁的、写屏障的、并发标记清除的回收机制,看上不是不是感觉就是一个只有老年代区域并且使用的cms(Java 中的一种垃圾回收器),只是看上去像而已,具体的实现差异还是很大的,这个后续会单独介绍。

goroutine

goroutine 是go中设计最巧妙的地方所在,goroutine 是一种go 协程,相对于线程来说实现在用户空间下。

栈空间

当开启一个goroutine时,runtime会为goroutine分配一个栈空间(通常 8k左右),这个栈空间不是固定大小的,而是在runtine需要的时候动态分配栈空间。go 中的栈空间是分块式的,这个后续会详细介绍。

channel

管道是Go语言在语言级别上提供的goroutine间的通讯方式,我们可以使用channel在多个goroutine之间传递消息。channel是进程内的通讯方式,是不支持跨进程通信的,如果需要进程间通讯的话,可以使用类似于Socket、管道、信号量等进程间通信方式,关键字是chan。
概念的话暂时就这么多,后期会对每一个知识点进行剖析。

相关文章

  • Go 语言进阶--基础概念

    本系列文章到现在已经将Go非常基础的部分介绍完成了,后面就开始设计非常具有Go特色的内容了,因为之后会出现一系列的...

  • go语言学习-从基础到实战到源码分析

    收集的一些go语言学习资料,有go基础学习系列,go项目实战,go进阶-go源码分析,还有go的一些书籍,go的架...

  • Go 并发 、并行、线程池

    1. Go 中类线程基础概念 Goroutin概念: Go语言中有个概念叫做goroutine, 这类似我们熟知的...

  • go语言基础

    go语言基础 go 语言接口

  • 并发进阶

    前面讲述了一些Go语言中并发的基础内容,今天来讲一下Go语言并发的进阶内容。 多核并行化 我们在执行并行计算的时候...

  • GO语言基础概念汇总

    选择题 【初级】下面属于关键字的是()A. funcB. defC. structD. class参考答案:AC,...

  • 初识Go语言-1

    Go语言学习路径 初识Go语言 Go语言环境搭建与IDE安装 Go语言基础语法 Go语言数据类型 Go语言变量和常...

  • Go语言基础语法--注释、基础结构2

    章节 GO语言基础语法--注释、基础结构(重要) 1.GO语言基础语法---注释、基础结构 基础结构注意事项 源文...

  • Go语言入坑

    GO语言基础 认识并安装GO语言开发环境 Go语言简介 Go语言是谷歌2009年发布的第二款开源编程语言 go语言...

  • 001-python知识

    Python基础 一、Python的基本概念 (一)面向对象 Python是一门面向对象的语言,像C语言和GO语言...

网友评论

    本文标题:Go 语言进阶--基础概念

    本文链接:https://www.haomeiwen.com/subject/yldhkctx.html