Golang
go
地瓜的土豆
这个作者很懒,什么都没留下…
展开
-
三色标记法
首先需要搞清楚什么是RootSet; 所有对象全部是白色 RootSet直接关联的放入灰色标记表; 灰色标记表(如[a, b])中的对象直接管理的白色标记表中的对象也放入灰色标记表,同时原灰色标记表中的([a,b])放入黑色标记表; 重复步骤3,直至灰色标记表中没有任何对象; 释放白色标记表中的对象;(此时,存在在白色标记表中的对象可以认定没有任何可用对象对其引用) 强三色不变式/弱三色不变式? 强三色不变式: 禁止黑色对象引用白色对象 弱三色不变式:允许黑色对象引用白色对象但是有条件,该条件为:原创 2021-06-30 10:14:39 · 180 阅读 · 0 评论 -
标记清除法
标记清除法 大概步骤: 1.STW开始 2.标记可达对象 3.清除不可达对象 4.退出STW 产生的问题: STW开始到结束,线程不可用(a) 标记可达对象需要扫描全部的堆 清除不可达对象之后可能会导致堆中的碎片化 可进行的优化: 1.STW开始 2.标记可达对象 3.退出STW 4.清除不可达对象 针对的是(a) ...原创 2021-06-29 16:33:32 · 206 阅读 · 0 评论 -
sync中并发工具类
sync.Mutex package main import ( "fmt" "sync" "time" ) func doSomeThingWithLock(lock *sync.Mutex, name string) { lock.Lock() defer lock.Unlock() fmt.Println("doSomethingWithLock", name) time.Sleep(time.Second * 2) fmt.Println(name, "leave") } fu原创 2021-06-22 10:48:21 · 206 阅读 · 0 评论