Go 股票行情仍活在记忆中

Go 股票行情仍活在记忆中,go,ticker,Go,Ticker,为什么当我初始化并更新它时,原来的代码仍然存在于内存中,如果我进行循环,它将很快杀死我的RAM timeOut := 10 ticker := time.NewTicker(time.Duration(timeOut) * time.Second) for { ticker = time.NewTicker(time.Duration(timeOut) * time.Second) } func NewTicker(d持续时间)*股票代码 NewTicker返回一个新的Ticker

为什么当我初始化并更新它时,原来的代码仍然存在于内存中,如果我进行循环,它将很快杀死我的RAM

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

func NewTicker(d持续时间)*股票代码

NewTicker返回一个新的Ticker,其中包含一个将发送消息的频道 具有由duration参数指定的时段的时间。它可以调整 间隔或滴答声以弥补接收速度慢的问题。持续时间d 必须大于零;否则,纽蒂克就会惊慌失措。停止 用于释放相关资源的ticker

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

按照说明操作:停止股票代码以释放相关资源

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

func NewTicker(d持续时间)*股票代码

NewTicker返回一个新的Ticker,其中包含一个将发送消息的频道 具有由duration参数指定的时段的时间。它可以调整 间隔或滴答声以弥补接收速度慢的问题。持续时间d 必须大于零;否则,纽蒂克就会惊慌失措。停止 用于释放相关资源的ticker

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

按照说明操作:停止股票代码以释放相关资源

for {
    ticker = time.NewTicker(time.Duration(timeOut) * time.Second)
}
这将尽可能快地创建ticker实例,并且由于ticker对象的性质,它们将无法清理(它们由ticket的实现引用,由于其异步性质,在不同的goroutine中发生)。Go可以非常快地执行此操作,导致OOM(内存不足)错误非常快

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

此外,请注意,您实际上并没有在任何地方使用您的ticker。考虑这里的例子:您将看到它们如何与ticker交互,使代码在每次滴答声中运行。请注意,那里的股票代码只创建一次,而不是在循环中创建

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

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

此外,请注意,您实际上并没有在任何地方使用您的ticker。考虑这里的例子:您将看到它们如何与ticker交互,使代码在每次滴答声中运行。请注意,那里的股票代码只创建一次,而不是在循环中创建