golang GC

目录

  • [1. golang GC](#1. golang GC)
    • [1.1. Golang 中 "debug.SetGCPercent (-1)" 有什么用](#1.1. Golang 中 "debug.SetGCPercent (-1)" 有什么用)
    • [1.2. golang 如何禁用 gc?](#1.2. golang 如何禁用 gc?)

1. golang GC

1.1. Golang 中 "debug.SetGCPercent (-1)" 有什么用

在 Go 语言中, debug.SetGCPercent() 函数是用于控制垃圾回收器 (Garbage Collector, GC) 的行为。这个函数允许你设置垃圾回收目标百分比, 即堆内存使用量与整个进程内存占用的比率。当该比例达到设定值时, 垃圾回收器将会触发。

如果将 debug.SetGCPercent (-1), 这意味着垃圾回收器不会自动触发, 除非手动调用 runtime.GC() 来进行垃圾回收。这通常用于调试目的或者特殊情况下的性能测试, 例如当你想要精确地控制垃圾回收的时间点, 或者避免垃圾回收在关键路径上影响程序性能的时候。

不过需要注意的是, 设置为 -1 并非推荐的常规做法, 因为它可能会导致程序占用越来越多的内存, 直到系统资源耗尽。在生产环境中, 应当根据实际需求合理调整 GC 百分比以保持良好的性能和内存利用率。

1.2. golang 如何禁用 gc?

GC 理解为垃圾回收, 常见触发垃圾回收是计数引用, 当引用计数为 0 时会触发垃圾回收。此时系统并不会回收内存, 而是会当作垃圾存放起来, 当下次需要的时候, 快速使用。关闭 GC 系统就会彻底回收内存。

C 语言和 C++ 是没有垃圾回收机制的。

关闭 GC:

  • 方法一: 设置环境变量 GOGC=off
  • 方法二: 运行时调用 debug.SetGCPercent (-1)

手动 GC:

  • runtime.GC ()
相关推荐
紧跟先前的步伐4 小时前
Go AI Agent 实战 22|完善 Agent 执行循环:从工具调用到最终回答
人工智能·ai·golang
后台模板学习5 小时前
Go Web开发中任务调度框架的源码解析与高可用实现方案
开发语言·后端·golang
FungLeo6 小时前
成为全栈·Go 后端篇·分类树与标签关系:目录变更为何需要协调
golang·go·gorm·数据库事务·分类树·成为全栈
fly-iot6 小时前
【FDE知识库】(1):AI 编程时代开发语言选型分析,云使用go,企业用java,算法python,底层c
开发语言·人工智能·golang
FungLeo6 小时前
成为全栈·Go 后端篇·文章查询与展示投影:安全分页、排序和软删除
golang·go·gorm·分页查询·成为全栈·sql安全
紧跟先前的步伐15 小时前
Go AI Agent 实战 24|工具系统工程化收尾与阶段验收
人工智能·ai·golang·1024程序员节
日日大王学编程16 小时前
#Feed 流项目复盘:Redis 时间线缓存与 Outbox 消息可靠性设计
golang·1024程序员节
北冥you鱼1 天前
Go 语言 CRUD 实战:从接口设计到真实业务场景
开发语言·后端·golang
利威尔xu1 天前
Go IM 源码实战(11):token 只是个 HASH,多端互踢的顺序错了就踢错人
后端·微服务·面试·架构·golang
microrain1 天前
SagooIoT 把协议解析和消息通知都放进了独立进程
物联网·golang·插件·sagooiot