到昨天为止,yfgc中的核心代码,我觉得是看完了。从gc_malloc中,了解到分配出来的内存如何进行管理;从gc_link中,了解到如何在两块内存之间建立引用依赖关系;从gc_enter和gc_leave中,了解到通过gc_malloc分配出来的自由内存是如何在调用堆栈上记录的;从gc_collect中,整合了以上所有的内容,了解到整个依赖树是如何建立固定部分和自动部分,以及如何标记出垃圾和非垃圾内存的区别并进行回收的。不过,在gc_collect的实现中,还是有些WEAK_CONTAINER的内容无法理解,因此今晚就来看看weak table吧。weak table我译为弱表,什么是弱表呢?弱表可以看作一个容器,容器内的元素为其他内存的指针,也就是容器和其他内存之间建立了引用依赖关系。只是这种引用是弱引用,其依赖关系通常会在gc_collect的时候被系统自动解除,以便于将容器中所指向的内存进行回收(如果这些内存没有在其他地方被强引用的话)。因此弱表引用的内存通常不能直接持有,因为其生命期是没有保证的,只能通过弱表进行查找访问。我的解释可能不太准确,有兴趣的同学自己google一下吧。解释了概念,接下来看看代码