You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin协程Job完成后会自动清理吗?重复用父Scope会有开销吗?

Kotlin协程Job的自动清理与父Scope复用开销问题

Job完成后的自动清理

是的,Kotlin协程中已完成的子Job会被父Job自动清理,父Scope不会持续追踪已结束的子协程。从你提供的测试代码结果可以验证这一点:子协程刚启动时,父Scope的children.count()返回1;延迟1秒后子协程执行完成,父Scope的children.count()变为0,说明父Job已经移除了这个已完成的子Job引用。

重复使用父Scope的开销问题

重复使用同一个父Scope创建新协程不会产生额外开销。因为父Job仅维护当前活跃状态的子Job集合,已完成的子Job会被自动从集合中移除,每次创建新协程只是向活跃集合中添加新的Job实例,不会因为历史完成的Job积累内存或性能负担。

测试代码

suspend fun main() = supervisorScope {
    launch {
        println("inner ${this@supervisorScope.coroutineContext.job.children.count()}") //inner 1
    }
    delay(1000)
    println("outer ${this@supervisorScope.coroutineContext.job.children.count()}") //outer 0
}

内容的提问来源于stack exchange,提问作者Tony Chen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 17:22:37