到昨天為止,yfgc中的核心代碼,我覺得是看完了。從gc_malloc中,了解到分配出來的內存如何進行管理;從gc_link中,了解到如何在兩塊內存之間建立引用依賴關系;從gc_enter和gc_leave中,了解到通過gc_malloc分配出來的自由內存是如何在調用堆棧上記錄的;從gc_collect中,整合了以上所有的內容,了解到整個依賴樹是如何建立固定部分和自動部分,以及如何標記出垃圾和非垃圾內存的區別并進行回收的。不過,在gc_collect的實現中,還是有些WEAK_CONTAINER的內容無法理解,因此今晚就來看看weak table吧。weak table我譯為弱表,什么是弱表呢?弱表可以看作一個容器,容器內的元素為其他內存的指針,也就是容器和其他內存之間建立了引用依賴關系。只是這種引用是弱引用,其依賴關系通常會在gc_collect的時候被系統自動解除,以便于將容器中所指向的內存進行回收(如果這些內存沒有在其他地方被強引用的話)。因此弱表引用的內存通常不能直接持有,因為其生命期是沒有保證的,只能通過弱表進行查找訪問。我的解釋可能不太準確,有興趣的同學自己google一下吧。解釋了概念,接下來看看代碼