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

为什么当我初始化自动收报机然后更新它时,原始自动收报机仍然存在于内存中,如果我进行循环,它会很快杀死我的 RAM


timeOut := 10

ticker := time.NewTicker(time.Duration(timeOut) * time.Second)

for {

    ticker = time.NewTicker(time.Duration(timeOut) * time.Second)

}


ABOUTYOU
浏览 109回答 2
2回答

九州编程

包车时间import "time"函数 NewTickerfunc NewTicker(d Duration) *TickerNewTicker 返回一个新的 Ticker,其中包含一个通道,该通道将发送具有持续时间参数指定的时间段的时间。它调整间隔或滴答以弥补缓慢的接收器。持续时间 d 必须大于零;否则,NewTicker 会恐慌。停止自动收报机以释放相关资源。按照说明进行操作:停止 ticker 以释放相关资源。

长风秋雁

for {     ticker = time.NewTicker(time.Duration(timeOut) * time.Second) }这将尽可能快地创建 ticker 实例,并且由于 ticker 对象的性质,它们将无法清理(它们由 ticket 的实现引用,由于其异步性质,发生在不同的协程)。Go 可以非常快速地执行此操作,从而非常迅速地导致 OOM(内存不足)错误。但是这种模式没有任何意义。没有充分的理由在for循环中创建这样的新代码。您可以创建多个代码,甚至很多,但您不能创建无限的代码,这样做也没有多大意义。此外,请注意您实际上并没有在任何地方使用代码。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go