一直对GC很感兴趣,之前一直在尝试理解UE的GC,不过UE的GC采取的是标记清除的GC方式并未使用分代GC。最近在阅读了网络上的一些Lua GC方面的文章后,再结合Lua5.4.6源码尝试着将自己理解的Lua分代GC总结成笔记。
对象年龄定义
/* object age in generational mode */
#define G_NEW 0 /* created in current cycle */
#define G_SURVIVAL 1 /* created in previous cycle */
#define G_OLD0 2 /* marked old by frw. barrier in this cycle */
#define G_OLD1 3 /* first full cycle as old */
#define G_OLD 4 /* really old object (not to be visited) */
#define G_TOUCHED1 5 /* old object touched this cycle */
#define G_TOUCHED2 6 /* old object touched in previous cycle */
新老对象的界定
#define isold(o) (