作者:陈明勇
个人网站:https://chenmingyong.cn
文章持续更新,如果本文能让您有所收获,欢迎点赞收藏加关注本号。 微信阅读可搜《程序员陈明勇》。 这篇文章已被收录于 Github,欢迎大 家Star 催更并持续关注。
前言
Go 1.23 版本在北京时间 2024 年 8 月 14 日凌晨 1:03 发布。该版本带来了多项重大更新,具体内容可以参考我之前的文章:Go 1.23 版本发布啦,这些重大更新你一定要知道!。本文将重点介绍其中关于定时器(Timer 和 Ticker)的优化。
准备好了吗?准备一杯你最喜欢的咖啡或茶,随着本文一探究竟吧。

Timer 和 Ticker 的基本概念
在深入探讨 Go 1.23 版本对 Timer 和 Ticker 定时器进行的优化之前,有的读者可能需要了解这两种定时器的基础知识。以下是关于这两种定时器的基本介绍:
-
Timer是一个一次性的定时器,用于在未来的某一时刻执行一次操作。常用于单次延迟执行任务。 -
Tciker是一个周期性的定时器,用于在固定的时间间隔重复执行任务。它在每个间隔时间到来时,向其通道(Channel)发送当前时间。常用于重复执行任务。
垃圾回收的改进
- Go 1.23 之前的行为: 如果一个
Timer或Ticker没有被显式调用Stop方法,即使程序不再引用它们,它们也不会立即被垃圾回收。Timer会在触发后被回收,而Ticker则从来不会被自动回收。 - Go 1.23 新行为: 如果程序不再引用一个
Timer或Ticker(即没有其他部分的代码持有它们的引用),即使没有调用Stop方法,它们也会有资格立即被垃圾回收。这可以减少内存泄漏的风险,因为不再需要显式调用Stop也可以保证资源会被回收。
这一更新提高了内存管理效率。以前,如果你创建了一个 Timer 或 Ticker,但忘记调用 S

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



