華為云計算 云知識 為什么使用“垃圾”回收?
為什么使用“垃圾”回收?

為什么使用“垃圾”回收,主要有如下四大功能:

一、避免常見的內(nèi)存管理錯誤

無用單元:不能被訪問,但還沒有釋放。將永遠無法被釋放(內(nèi)存泄露)。

懸垂引用:還能被訪問,卻已經(jīng)被回收。程序崩潰、未定義行為。

二、責任分離

程序員集中注意力于業(yè)務邏輯,而不是內(nèi)存管理。

三、提高性能

基于bump-pointer的分配回收算法比C語言的基于free-list的malloc和free更快。

有編譯器的配合,生成快速路徑

四、對并發(fā)、多核的硬件資源有利

即使應用程序是單線程的,也可以有多個GC線程幫助它管理內(nèi)存。

利用異構(gòu)CPU,將GC線程放在小核上,可以減少能耗。

一些并發(fā)無鎖數(shù)據(jù)結(jié)構(gòu)在有垃圾回收的情況下實現(xiàn)更容易。

1. Michael-Scott lock-free queue

2. Read-copy-update (RCU)