![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
垃圾回收
llllllillll
垃圾程序猿一枚
展开
-
UE4垃圾回收代码阅读笔记
源码版本: 4.22.3一:自动GC部分void UWorld::Tick( ELevelTick TickType, float DeltaSeconds ){ //略 GEngine->ConditionalCollectGarbage(); //略}下面将conditionCollectGarbage 方法自己的理解通过注释的方式记录。...原创 2020-03-23 18:27:06 · 1727 阅读 · 0 评论 -
GC算法 笔记:GC标记-压缩算法
将 GC标记-清除算法与GC复制算法相结合。一:Lisp2算法标记阶段结束后进入压缩阶段,压缩阶段缩小被标记节点之间的距离。compaction_phase(){ set_forwarding_ptr() adjust_ptr() move_obj() }set_forwarding_ptr(){ scan = new_address = $hea...原创 2020-03-16 10:47:18 · 288 阅读 · 0 评论 -
GC算法 笔记:GC复制算法
只把某个空间的活动对象复制到其他空间,把原空间里的所有对象都回收掉。copying(){ $free = $to_start for(r : $ roots) *r = copy(*r) swap($from_start, $to_start)}copy(obj){ if(obj.tag != COPIED) ...原创 2020-03-13 14:03:17 · 293 阅读 · 0 评论 -
GC算法 笔记:引用计数法
通过mutator在处理过程中通过增减计数器来进行内存管理,没有显式的开启GC的时机。new_obj(size){ obj = pickup_chunk(size, $free_list) if(obj == NULL) allocation_fail() else obj.ref_cnt = 1 retur...原创 2020-03-12 14:00:00 · 239 阅读 · 0 评论 -
GC算法 笔记:标记-清除算法
标记阶段:把所有活动对象都做上标记的阶段。清除阶段:把没有标记的对象也就是非活动对象回收的阶段。伪代码:mark_sweep(){ mark_phase() sweep_phase()}一:标记阶段mark_phase(){ for(r : $roots) mark(*r)}mark(obj){ if(obj.ma...原创 2020-03-11 17:13:19 · 263 阅读 · 0 评论 -
GC算法 笔记
1.头对象的大小 对象的种类2.域域中的数据类型:指针 非指针3.指针4.mutator生成对象,更新指针。可以理解为“应用程序”。5.堆动态存放对象的内存空间。6.活动对象,非活动对象能通过mutator引用的对象称为活动对象,不能被引用的称为非活动对象,非活动对象不能被再次引用。7.分配...原创 2020-03-11 13:57:38 · 213 阅读 · 0 评论