JetBrains 旨在通过更好的垃圾回收机制来改善 Kotlin/Native
在 2020 年,JetBrains 的 Kotlin 团队曾发布了重新设计 Kotlin/Native 中内存管理方法的计划。现如今,该团队则对其进展进行了更新,并分享了一些关于内存管理设计的细节。此外,官方透露,他们计划在 2021 年夏季结束前提供一个开发预览。
根据 JetBrains 的说法,最初的 Kotlin/Native 自动内存管理器使用了一个延迟引用计数的垃圾收集器,主要原因是在于它的简单性。然而,现在这个早期的设计选择已经成为提高 Kotlin/Native 性能和开发者体验的障碍,因此该团队正在寻求改进它。
博客内容指出,现代追踪式垃圾收集算法比引用计数式垃圾收集器更加灵活可调,并且更容易适应多线程应用程序的需求。但是,所有追踪式垃圾收集器都有一个共同的弱点--它们需要来自编程语言运行时和编译器的相当复杂的基础架构。
目前,Kotlin 团队正在研究新的基础架构。并透露,他们的第一个任务是确定 roots--内存中所有可以存储对动态分配内存的引用的位置。“这将使我们能够开始追踪一个对象图。”
同时,其还需要一个特殊的基础架构来实现并发垃圾回收算法,以避免阻塞应用程序的关键线程。“何苦?因为我们团队的主要使用场景是运行 UI 应用程序。UI 应用有一个 latency-sensitive 主线程,因此对于 Kotlin/Native 来说,仅支持 stop-the-world garbage collection 的设计是行不通的。”
因此,Kotlin 团队决定使用所谓的 safe points 方法,根据所有 roots 是否存储在可预测的位置,将编译后的代码染成 safe 或 unsafe。这些位置对运行时来说是已知的,这意味着垃圾回收可以与处于安全状态的代码并发运行。
重新设计的另一个目的则是实现与平台库的无缝互操作性。这需要内存管理器跟踪泄漏到 non-managed world 的自动管理内存的句柄,还需要支持弱引用,以及在自动管理的 Kotlin 对象有一个附加的平台特定对象的情况下运行额外的 deallocation code。
Kotlin 团队表示,其计划实现一种生产就绪的垃圾回收实现,支持线程之间无障碍地共享对象并满足所有其他设计目标。在未来,还可能会有一些受支持的垃圾收集算法,且这些算法都是针对不同的用例进行了优化。
原有的 Kotlin/Native 内存管理方案将继续受到支持,以简化现有应用程序的迁移。因此,开发人员在构建 Kotlin/Native 应用程序时,将能够选择垃圾回收实现。
详情可查看官方博客:https://blog.jetbrains.com/kotlin/2021/05/kotlin-native-memory-management-update/
关注公众号
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
“源动力“技术沙龙:深入了解 KV 数据库和 ZNBaseDB
“源动力“技术沙龙由浪潮ZNBaseDB发起,旨在为所有开源爱好者分享有干货重内容的数据库信息。Meetup与2021年四月份启动,已完成第一期分享。嘉宾包括Zilliz首席布道师顾钧老师等。本次活动,为第二期。我们邀请了陈磊老师和管延信老师。 陈磊,开放原子开源基金会TOC成员,360资深技术专家,基础架构负责人,开源爱好者。 主要从事分布式存储、NoSQL数据库、云原生、消息中间件等云计算及分布式系统相关技术领域的工作。 负责和推动公司内项目的开源与发展,开源分布式NoSQL数据库Pika的负责人,开源PHP代码分析工具PHPTrace项目的发起人,基础架构团队开源项目包括:Atlas、PHPTrace、Pika、QBusBridge、QConf、Zeppelin。 管延信,浪潮云溪数据库副本团队负责人。拥有多年分布式数据库内核研发经验,在分布式一致性、高可用,事务并发控制,PLSQL方面均有研究。同时也是开源社区的活跃贡献者。 同时还有很多大咖亲临现场,想要和大咖们有近距离接触的机会,即刻报名,名额有限!先到先得! 报名方式:扫描长图中二维码直接报名。 活动时间:5月29日下午3...
-
下一篇
红帽为 Linux 5.14 大幅优化设备映射器,最高提升十倍性能
近日,红帽的工程师们对 DeviceMapper(DM,设备映射器)的代码进行了大幅的性能优化,这项改动现在已经进入了 Linux 5.14 的合并队列中。 设备映射器是一个由 Linux 内核提供的框架,用于将物理块设备映射到更高级别的虚拟块设备上。它构成了逻辑卷管理器(LVM)、软件 RAID 和 dm-crypt 磁盘加密的基础,并提供了额外的功能,如文件系统快照。 设备映射器的工作原理是将数据从一个虚拟块设备(由设备映射器本身提供)传递到另一个块设备,数据也可以在转换中被修改。 该提交「dm space maps: improve performance with inc/dec on ranges of blocks」(DM space maps:通过对区块范围的 inc/dec 提高性能)被总结为:"当我们打破 btree 节点上的共享时,我们通常需要对节点中持有的每个值增加引用计数。这可能会导致对 space maps 的大量重复调用。通过改变 space map inc/dec 方法的接口来解决这个问题,以获取要操作的相邻块的范围。" 虽然看起来这是一项很小的改动,但对...
相关文章
文章评论
共有0条评论来说两句吧...


微信收款码
支付宝收款码