在《铁 rust 》一书中,在Memory and Allocation的部分,它说:
GC跟踪并清理不再使用的内存,我们不需要考虑它……
Ruust走了一条不同的路:一旦拥有它的变量超出作用域,就会自动返回内存.
因此,在RuST中,内存会自动释放(与c不同)…但这不就是垃圾收集者的工作吗. 那么,Rust的内存管理与通常的GC有什么不同呢?
在《铁 rust 》一书中,在Memory and Allocation的部分,它说:
GC跟踪并清理不再使用的内存,我们不需要考虑它……
Ruust走了一条不同的路:一旦拥有它的变量超出作用域,就会自动返回内存.
因此,在RuST中,内存会自动释放(与c不同)…但这不就是垃圾收集者的工作吗. 那么,Rust的内存管理与通常的GC有什么不同呢?
垃圾收集器解决了一个不同的问题.
当对象超出范围时,它们不会简单地释放对象.如果您同时在某个位置存储了对对象的引用,则即使对象超出范围,它们也会使对象保持活动状态.
Rust禁止您(在编译时)保留Any引用,因此它可以安全地释放对象.垃圾收集器最终将运行复杂的算法来判断对象是否还有任何活动引用.(还可以检测未使用的循环引用,例如,当两个对象彼此指向,但没有其他对象持有对它们的引用时.)
这可能会导致所谓的"GC暂停",中断正常程序一段不确定的时间.另一方面,作为程序员,它允许您简单地(几乎)将引用放在您喜欢的任何位置,而无需担心.