為什么當我初始化自動收報機然后更新它時,原始自動收報機仍然存在于內存中,如果我進行循環,它會很快殺死我的 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 關注
- 194 瀏覽
添加回答
舉報
0/150
提交
取消