细谈Go变量的内存分布

Posted 菜刚

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了细谈Go变量的内存分布相关的知识,希望对你有一定的参考价值。

我们程序中的变量大多被分配在内存的两个区域:statckheap

stackheap

首先让我们一起来回顾一下进程的内存分配:
我们写的程序代码跑起来后,会是一个进程;OS会给我们的进程分配内存;内存结构大致如下:
在这里插入图片描述

OS给一个进程分配的内存空间大致可以分为:代码区全局数据区栈(stack)堆(heap)环境变量区域以及中间空白的缓冲区六个部分。其中,数据的增长路径除栈(stack)是由高到低之外,其余的均是由低到高(可看图中数据箭头)。

我们思考一下,为什么栈(stack)区这么特殊和其他区域路径相反?还有,进程内存中stackheap和数据结构中的stackheap名字都相同,是有什么联系吗?请带着问题往下看:

进程内存中的stack

以上是关于细谈Go变量的内存分布的主要内容,如果未能解决你的问题,请参考以下文章

细谈Go变量的内存分布

细谈Go变量的内存分布

JVM细谈Java内存模型JMM

阿里架构师细谈:微服务+分布式+性能优化+JVM调优+团队开发

细谈分布式锁及在OpenStack上的应用:如何实现Active/Active高可用

微灯手握寸笔,细谈内存管理