为什么当我初始化自动收报机然后更新它时,原始自动收报机仍然存在于内存中,如果我进行循环,它会很快杀死我的 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 以释放相关资源。
长风秋雁
TA贡献1757条经验 获得超7个赞
for { ticker = time.NewTicker(time.Duration(timeOut) * time.Second) }
这将尽可能快地创建 ticker 实例,并且由于 ticker 对象的性质,它们将无法清理(它们由 ticket 的实现引用,由于其异步性质,发生在不同的协程)。Go 可以非常快速地执行此操作,从而非常迅速地导致 OOM(内存不足)错误。
但是这种模式没有任何意义。没有充分的理由在for
循环中创建这样的新代码。您可以创建多个代码,甚至很多,但您不能创建无限的代码,这样做也没有多大意义。
此外,请注意您实际上并没有在任何地方使用代码。
- 2 回答
- 0 关注
- 108 浏览
添加回答
举报
0/150
提交
取消