这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天
协程栈的作用
- 记录协程的执行路径。
- 记录局部变量。
- 参数传递、返回值传递。
协程栈的位置
C/C++中栈区和堆区是分开的,堆上的内存需要程序员自己去释放,栈上的内存由程序释放,但是Go语言中栈内存是从堆内存上申请的,初始空间为2KB,所以说Go协程栈位于Go堆内存上,而Go堆内存位于操作系统虚拟内存上。
TCMalloc
tcmalloc全称Thread-Caching Malloc,即线程缓存的malloc,实现了高效的多线程内存管理,用于替代系统的内存分配相关的函数(malloc、free,new,new[]等)。
mmap()
mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。mmap在用户空间映射调用系统中作用很大。
函数内联
在计算机科学中,内联函数(有时称作在线函数或编译时期展开函数)是一种编程语言结构,用来建议编译器对一些特殊函数进行内联扩展(有时称作在线扩展)。
逃逸分析
在计算机语言编译器优化原理中,逃逸分析是指分析指针动态范围的方法,它同编译器优化原理的指针分析和外形分析相关联。当变量(或者对象)在方法中分配后,其指针有可能被返回或者被全局引用,这样就会被其他方法或者线程所引用,这种现象称作指针(或者引用)的逃逸(Escape)。通俗点讲,如果一个对象的指针被多个方法或者线程引用时,那么我们就称这个对象的指针(或对象)的逃逸(Escape)。