目录
- [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 ()