memory-management - 1.5+ 中的 Golang 垃圾收集器改进是否会影响释放的内存量?

标签 memory-management go garbage-collection

Google 的 go 在垃圾收集器的最后两个主要版本中取得了巨大进步。与以前相比,垃圾收集器运行的时间几乎可以忽略不计。我想知道这些改进是否会牺牲其他任何东西。

Go 1.6 在垃圾回收运行中的释放量是否仍与 Go 1.4 一样多?

垃圾收集实际上会在运行时释放所有可能释放的资源,还是会做出让步以加快速度?

最佳答案

这取决于您的堆内存使用模式。主要目标是通过垃圾收集器 (GC) 更可预测且更短的暂停来有效利用内存。为了实现这一点,CPU 使用率会有所增加,并且除非必要,一些垃圾收集可能会推迟到 GC 的下一次运行。 GC 将更频繁地运行并更好地利用可用内核。一般来说,人们报告的停顿时间更短、更均匀。一般来说,这是一个巨大的胜利。 Go 1.6 在 Go 1.5 的基础上进行了改进,Go 1.5 是新 GC 的第一个版本。 Go 1.7 会更好。

仔细编程以减少不必要的 GC 使用会对性能产生很大影响。

关于memory-management - 1.5+ 中的 Golang 垃圾收集器改进是否会影响释放的内存量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35249583/

相关文章:

c# - System.ValueType 的一个实例在堆上还是在栈上?

c++ - 如何复制或返回包含动态分配内存的对象?

依赖接口(interface)的golang接口(interface)

java - 试图理解 java 中的垃圾收集

Java(热点)详细 :gc output use in application and process on runtime

memory-management - forrtl : severe (179): Cannot allocate array - overflow on array size calculation

c# - 通过 lambda 使对象保持事件状态

python - WebSocket JWT Token 连接授权

go - 临时文件是暂时的吗?如果是这样多久?

logging - GOGCTRACE 和采集时间