当前位置: 首页 > news >正文

详解golang内存管理

介绍

要搞明白 Go 语言的内存管理,就必须先理解操作系统以及机器硬件是如何管理内存的。因为 Go 语言的内部机制是建立在这个基础之上的,它的设计,本质上就是尽可能的会发挥操作系统层面的优势,而避开导致低效情况。

操作系统内存管理

其实现在计算机内存管理的方式都是一步步演变来的,最开始是非常简单的,后来为了满足各种需求而增加了各种各样的机制,越来越复杂。这里我们只介绍和开发者息息相关的几个机制。

最原始的方式

我们可以把内存看成一个数组,每个数组元素的大小是 1B,也就是 8 位(bit)。CPU 通过内存地址来获取内存中的数据,内存地址可以看做成数组的游标(index)。

img

CPU 在执行指令的时候,就是通过内存地址,将物理内存上的数据载入到寄存器,然后执行机器指令。但随着发展,出现了多任务的需求,也就是希望多个任务能同时在系统上运行。这就出现了一些问题:

1、内存访问冲突:程序很容易出现 bug,就是 2 或更多的程序使用了同一块内存空间,导致数据读写错乱,程序崩溃。更有一些黑客利用这个缺陷来制作病毒。

2、内存不够用:因为每个程序都需要自己单独使用的一块内存,内存的大小就成了任务数量的瓶颈。

3、程序开发成本高:**你的程序要使用多少内存,内存地址是多少,这些都不能搞错,对于人来说,开发正确的程序很费脑子。


http://www.mrgr.cn/news/3880.html

相关文章:

  • 自定义View实例
  • XSS的一些相关案例及DOM破坏的案例
  • 最新动态鲨鱼导航网引导页html源码
  • C++:模板 II(非类型模板参数,特化,分离编译)
  • Google 开发者大会东南亚制胜攻略分享
  • 5.9.9 串级PID控制器
  • SQL基础——SQL分类
  • 【赵渝强老师】Spark中的RDD
  • 重新认识AbstractQueuedSynchronizer
  • day06_算法训练
  • Linux信号机制探析--信号的产生
  • 今年暑期渗透测试面试经验分享
  • java操作redis
  • MySQL各个版本root账号没有最高权限的解决方法
  • C语言典型例题47
  • 对话式人工智能Copilot和Agent之间的差异_2024-08-21
  • 高性能minio集群环境搭建(配视频教程)
  • http基础原理及应用
  • 39岁啦:聊聊我的29岁和39岁
  • 【机器学习】探索机器学习在旅游业的革新之旅