

Bronze垃圾收集器是否使 Rust 更易于使用?
source link: https://www.jdon.com/57952
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Bronze垃圾收集器是否使 Rust 更易于使用?
Rust 是一种类型和内存安全的通用编程语言。Rust 不使用垃圾收集器,而是通过复杂但复杂的类型系统来实现这些属性。这样做使 Rust 非常高效,但使 Rust 相对难以学习和使用。
我们为 Rust 设计了 Bronze,这是一个可选的、基于库的垃圾收集器。
为了了解 Bronze 是否能让 Rust 更有用,我们对来自 633 人班级的志愿者进行了一项随机对照试验,总共收集了 428 名学生的数据。我们发现,对于需要管理复杂别名的任务,Bronze用户更有可能在可用时间内完成任务,而完成任务的用户只需要大约三分之一的时间(4 小时与 12 小时)。
论文点击标题。
网友讨论:
一个常见的谬误是,Rust借用检查器只是 GC 的替代品,其实这是谬误,它不仅限于此:它可以为您提供 Java 或 Go 等无法提供的安全保证(没有可变别名和数据竞争)。
至少对我来说,这些额外的保证并没有防止很多错误。特别是,我的代码很少受到数据竞争的影响:通常任何共享状态都是一个文件或网络资源,可以被多个主机上的多个进程访问,而 Rust 的借用检查器在这些方面没有帮助,但我仍然需要付出成本(我知道生产力会随着经验而提高,但回报会迅速减少,而且明显的共识似乎是 GC 和 BC 之间仍然存在很大的生产力差距)。
Rust如何在允许多个可变引用的同时获得安全性?是通过强制执行单线程代码吗?
是的,他们不试图保证线程安全:
Rust 一次只允许一个对一个值的可变引用。为了获得更大的灵活性,(标准)Rust 通过对对象的不可变引用来支持对象的内部变异 。程序员可以借用一个允许变异的值的特殊引用,并且运行时确保一次只能存在一个这样的引用,从而可以安全地放松编译时检查。使用 Bronze,可以通过对每个垃圾收集对象的所有引用进行更改,无需额外工作。一个关键的权衡是 Bronze 不保证线程安全;与其他垃圾收集语言一样,确保安全是程序员的责任。
听起来这篇论文更多地是关于 Rust 中当前内部可变性 API 的可用性,而不是关于 GC。我可以证明,在 Rust 中获取和使用内部可变性 API 非常困难。我很想看到更多关于如何更改这些 API 以提高其可用性的工作。
Recommend
-
95
JVM(HotSpot) 7种垃圾收集器的特点及使用场景
-
42
-
70
-
49
-
41
G1的第一篇paper(附录1)发表于2004年,在2012年才在jdk1.7u4中可用。oracle官方在jdk9中将G1变成默认的垃圾收集器,以替代CMS。为何oracle要用G1替换CMS呢,G1有哪些优点?下面我将为大家揭开迷雾。 一,了解G1 首...
-
36
1. 一些概念 1.1 垃圾&垃圾收集 垃圾:在 JVM 语境下,“垃圾”指的是死亡的对象所占据的堆空间。 垃圾收集:所谓“垃圾收集”,就是将已...
-
25
Go 语言垃圾收集器的实现原理7.2 垃圾收集器我们在上一节中详细介绍了 Go 语言内存分配器的设计与实现原理,分析了运行时内存管理组件之间的关系以及不同类型对象的分配原理,然而编程语言的内存管...
-
9
本文详细介绍G1垃圾收集器的参数配置,如何进行性能调优, 以及怎样对GC性能进行分析和评估。 0. G1简介 G1的全称为 Garbage First Garbag...
-
12
听说微信搜索《Java鱼仔》会变更强哦! 本文收录于JavaStarter ,里面有我完整的Java系列文章,学习或面试都可以看看哦 (一)概述 如果说垃圾收集...
-
12
Java 虚拟机原理 (五) G1垃圾收集器深入 发表于 2021-01-11...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK