为了账号安全,请及时绑定邮箱和手机立即绑定

股票代码仍然存在于记忆中

股票代码仍然存在于记忆中

Go
ABOUTYOU 2023-05-22 17:00:34
为什么当我初始化自动收报机然后更新它时,原始自动收报机仍然存在于内存中,如果我进行循环,它会很快杀死我的 RAMtimeOut := 10ticker := time.NewTicker(time.Duration(timeOut) * time.Second)for {    ticker = time.NewTicker(time.Duration(timeOut) * time.Second)}
查看完整描述

2 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

包车时间

import "time"

函数 NewTicker

func NewTicker(d Duration) *Ticker

NewTicker 返回一个新的 Ticker,其中包含一个通道,该通道将发送具有持续时间参数指定的时间段的时间。它调整间隔或滴答以弥补缓慢的接收器。持续时间 d 必须大于零;否则,NewTicker 会恐慌。停止自动收报机以释放相关资源。


按照说明进行操作:停止 ticker 以释放相关资源。


查看完整回答
反对 回复 2023-05-22
?
长风秋雁

TA贡献1757条经验 获得超7个赞

for {
    ticker = time.NewTicker(time.Duration(timeOut) * time.Second)
}

这将尽可能快地创建 ticker 实例,并且由于 ticker 对象的性质,它们将无法清理(它们由 ticket 的实现引用,由于其异步性质,发生在不同的协程)。Go 可以非常快速地执行此操作,从而非常迅速地导致 OOM(内存不足)错误。

但是这种模式没有任何意义。没有充分的理由在for循环中创建这样的新代码。您可以创建多个代码,甚至很多,但您不能创建无限的代码,这样做也没有多大意义。

此外,请注意您实际上并没有在任何地方使用代码。


查看完整回答
反对 回复 2023-05-22
  • 2 回答
  • 0 关注
  • 76 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信