当前位置: 首页 > 科技观察

JetBrains旨在通过更好的垃圾收集机制来改进Kotlin-Native

时间:2023-03-13 14:33:46 科技观察

2020年,JetBrains的Kotlin团队发布了重新设计Kotlin/Native内存管理方式的计划。现在,该团队更新了其进展并分享了有关内存管理设计的一些细节。此外,官方透露他们计划在2021年夏季结束前提供开发预览。据JetBrains称,最初的Kotlin/Native自动内存管理器使用了带有惰性引用计数的垃圾收集器,主要是因为它的简单性。然而,现在这种早期的设计选择已经成为提升Kotlin/Native性能和开发者体验的障碍,因此团队正在寻求改进。博客内容指出,现代跟踪垃圾收集算法比引用计数垃圾收集器更灵活和可调整,更容易适应多线程应用程序的需要。然而,所有跟踪垃圾收集器都有一个共同的弱点——它们需要来自编程语言运行时和编译器的相当复杂的基础设施。目前,Kotlin团队正在开发新的基础架构。并透露他们的首要任务是识别根——内存中可以存储对动态分配内存的引用的所有位置。“这将使我们能够开始追踪对象图。”同时,它还需要一个特殊的基础设施来实现并发垃圾收集算法,以避免阻塞应用程序的关键线程。“何必呢?因为我们团队的主要使用场景是运行UI应用。UI应用有一个对延迟敏感的主线程,所以对于Kotlin/Native来说,只支持stop-the-world垃圾回收的设计是不可行的。所以Kotlin团队决定使用所谓的安全点方法,根据所有根是否存储在可预测的位置,将编译后的代码标记为安全或不安全。这些位置是运行时已知的,这意味着垃圾收集可以与代码同时运行重新设计的另一个目标是实现与平台库的无缝互操作性。这需要内存管理器跟踪泄漏到非托管世界的自动管理内存的句柄,以支持弱引用,并在自动管理的Kotlin对象具有附加的特定于平台的对象的情况下运行额外的释放代码。Kotlin团队表示,它计划实施一个生产就绪的垃圾收集实现,该实现支持线程之间不受阻碍地共享对象并满足所有其他设计目标。未来,可能还会有一些支持的垃圾收集算法针对不同的用例进行优化。将继续支持遗留Kotlin/Native内存管理方案,以简化现有应用程序的迁移。因此,开发人员在构建Kotlin/Native应用程序时将能够选择垃圾回收实现。本文转自OSCHINA本文标题:JetBrains旨在通过更好的垃圾回收机制改进Kotlin/Native地址:https://www.oschina.net/news/143144/kotlin-native-memory-management-update