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

Go-性能优化、自动内存管理

性能优化:

1.业务代码:特定场景的具体问题具体分析
2.SDK
3.基础库
4.语言运行时:解决通用问题 Tradeoffs
5.OS

自动内存管理Garbage collector(GC)

管理的是动态内存:malloc()
所以管理动态内存就是垃圾回收
可以解决:double-free use-after-free问题
在CVE漏洞平台上能看到 double-free 和use-after-free是很多的

任务:
1.新对象分配空间
2.找到存活对象
3.回收死亡对象

名词:
Mutator:业务线程,分配新对象
Collector:GC线程,找到存活的,回收死亡的
Serial GC:只有一个collector
Parallel GC:多个collector
Concurrent GC:能既创建 又回收(同时)

评价GC算法:
安全性:不能回收存活的对象
吞吐率:花在GC上的时间
暂停时间:业务是否感知
内存开销:GC元数据开销

追踪垃圾回收:标记根对象-找到可达对象-清理不可达对象
分代GC:most objects die young 每个对象都有年龄 分区
在这里插入图片描述young generation的对象 存活的很少 可以copying collection
old generation的对象 趋向于一直活着 复制反而开销比较大 用mark-sweep collection

也可以引用计数:大于零就存活(这个就是内存管理和程序执行中了)类似于C++的智能指针。缺点是:原子操作开销大,循环引用,内存开销。


http://www.kler.cn/a/384678.html

相关文章:

  • 华为交换机Vlan划分
  • Oracle SQL Loader概念及用法
  • Ubuntu笔记-auto remove
  • salesforce批量修改对象字段的四种方法
  • 20241107给野火LubanCat1-BTB刷Ubuntu的预编译固件并点亮USB接口的热像仪AT600
  • WPF怎么通过RestSharp向后端发请求
  • Spring Boot详解:从入门到精通
  • File.separator与File.separatorChar的区别
  • 166页PDF | 埃森哲-XX集团企业架构数字化整体规划设计方案(限免下载)
  • Javaweb梳理10——Maven
  • 2020年美国总统大选数据分析与模型预测
  • 【人工智能】利用大语言模型(LLM)实现机器学习模型选择与实验的自动化
  • 提交linux kernel patch流程
  • 【C++】异常处理机制(对运行时错误的处理)
  • vue2 pdf 链接地址打开
  • “让工作更简单智能“ - 经纬恒润自主研发INTEWORK系列工具
  • 【信号处理】基于联合图像表示的深度学习卷积神经网络
  • HarmonyOS第一课——DevEco Studio的使用
  • 使用Spring Boot搭建简单的web服务
  • Spring Boot代理问题
  • SpringBoot(二)
  • Redisson分布式锁全解析
  • 技术总结(二十二)
  • 【开源免费】基于SpringBoot+Vue.JS周边产品销售网站(JAVA毕业设计)
  • 使用 `Celery` 配合 `RabbitMQ` 作为消息代理,实现异步任务的调度、重试、定时任务以及错误监控等功能
  • [ vulnhub靶机通关篇 ] 渗透测试综合靶场 DarkHole:1 通关详解 (附靶机搭建教程)