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

【go】time.after内存泄漏

func worker() {
  select {
  case <-c:
       // ... do some stuff
  case <-time.After(30 *time.Second):
      return
  }
}

它创建了一个计时器,但返回的只是计时器关联的通道
如果不从返回的通道中接收值,即使超时发生后,计时器也不会被垃圾回收
这会导致计时器泄漏,特别是在循环中使用时会创建大量无法及时回收的计时器

改进方法 调用defer 进行stop

func worker() {
  timer := time.NewTimer(30 * time.Second)
  defer timer.Stop() // 确保定时器被清理
select {
  case <-c:
       // ... do some stuff
  case <-timer.C:
      return
  }
}

Kubernetes中的改进方式: 重用定时器

在maxinflight.go的代码中,使用了wait.Until函数,其内部已经正确处理了定时器的创建和清理:
(接上篇 maxinflight.go 的源码略读)


func Until(f func(), period time.Duration, stopCh <-chan struct{}) {
    JitterUntil(f, period, 0.0, true, stopCh)
}
func JitterUntil(f func(), period time.Duration, jitterFactor float64, sliding bool, stopCh <-chan struct{}) {
    var t *time.Timer
    var sawTimeout bool
	for {
    select {
    case <-stopCh:
        return
    default:
    }

    jitteredPeriod := period
    if jitterFactor > 0.0 {
        jitteredPeriod = Jitter(period, jitterFactor)
    }

    if !sliding {
        t = resetOrReuseTimer(t, jitteredPeriod, sawTimeout)
    }

    func() {
        f()
    }()

    if sliding {
        t = resetOrReuseTimer(t, jitteredPeriod, sawTimeout)
    }

    // 注意这里重用了定时器
    select {
    case <-stopCh:
        return
    case <-t.C:
        sawTimeout = true
    }
}
}

相关文章:

  • 使用 USRP 和 OpenAirInterface 构建实时神经接收器原型
  • 【Java项目】基于SpringBoot的超市进销存系统
  • React antd的datePicker自定义,封装成组件
  • 【数据挖掘】Pandas之DataFrame
  • 通过多线程同时获取H264和H265码流
  • 河道水位尺位数据集目标检测
  • 静态时序分析:SDC约束命令set_clock_jitter详解
  • halcon学习笔记1
  • 高效文件管理工具:一键生成文件清单,提升工作效率
  • Kneser-Ney平滑在自然语言处理中的应用
  • npm ERR! code 128 npm ERR! An unknown git error occurred
  • 一文讲清楚 MySQL 事务隔离级别和实现原理
  • 使用DeepSeek辅助编写一个快速排序算法程序的步骤
  • 《深度学习进阶》第8集:多模态学习与跨领域融合**
  • vue 和 react 底层采用的 diff 算法的区别
  • C++ MySQL ORM接口设计优化:从宏污染到现代流式API
  • Apache nifi demo 实验
  • 【实战 ES】实战 Elasticsearch:快速上手与深度实践-2.1.2字段类型选择:keyword vs text、nested对象
  • ollama本地部署DeepSeek-R1大模型使用前端JS调用的详细流程
  • 确保移动设备上机器学习的安全性:挑战与最佳实践
  • 西夏文残碑等文物来沪,见证一段神秘灿烂的历史
  • 三大白电巨头去年净利近900亿元:美的持续领跑,格力营收下滑
  • 【社论】人工智能,年轻的事业
  • 日本大米价格连续16周上涨,再创最高纪录
  • 庆祝中华全国总工会成立100周年暨全国劳动模范和先进工作者表彰大会隆重举行,习近平发表重要讲话
  • 大学2025丨专访南开人工智能学院院长赵新:人工智能未来会变成通识类课程