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

详解golang内存管理

介绍

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

操作系统内存管理

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

最原始的方式

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

img

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

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

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

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

http://www.lryc.cn/news/427112.html

相关文章:

  • C++ 线程 一些同步方式
  • 【开发语言】编译型语言和解释性语言有啥区别?
  • 将A服务器上指定文件夹中的文件,批量同步到B服务器上
  • 2024.8.17
  • 十分钟搭建一个RTMP服务器
  • Spring Boot解决循环注入问题
  • 《数据挖掘》期末考核重点
  • Golang | Leetcode Golang题解之第334题递增的三元子序列
  • HarmonyOs编写一个案例实现一个照片选择(阶段进阶 四种需求 逐一完善)
  • 洗衣机洗衣服一些知识
  • 探索文件系统:高效、可靠的文件管理与访问机制
  • 启程与远征Ⅸ--优化生成式人工智能以满足业务需求的框架
  • canal数据同步工具介绍与应用
  • ubuntu18.04 设置静态地址
  • jira敏捷开发管理工具视频教程Confluence工作流协同开发(2024)
  • 【网络】TCP回显服务器和客户端的构造,以及相关bug解决方法
  • Python知识点:如何使用Boto3进行AWS服务管理
  • Java - 正则表达式
  • Vue一款流行的JavaScript前端框架
  • GPT-SoVITS
  • linux高级编程——文件IO(常用函数大全)
  • matplotlib画图
  • Jetpack 各种框架简介
  • 海康VisionMaster使用学习笔记5-开机自启动
  • 驾驭数据之序:SQL序列的奥秘与实现
  • 【LeetCode】148. 排序链表
  • 阿里云-java调用短信服务,第三方接口的开启(傻瓜式教程)
  • 以node / link文件表征的道路网络-----基于南京公路公开数据做路径规划(下)------dijkstra算法的一些简单花样
  • 计算机操作员中级理论知识试题
  • Redis主从同步配置