GC时新版的go对syncpool里面的对象怎么处理?

来源:1-16 辅导 + 案例分析 + 答疑

Garry_27

2021-06-29 23:15:09

视频里说早期版本都会清空,新版本呢?

写回答

1回答

Xargin

2021-06-29

sync.Pool 的图上有个 victim cache,

新版 GC 时:

  1. 清空 victim cache

  2. 老的 local 直接转到 victim 里


查找过程如果 local 找不到,会从 victim 里拿,并且会往 local 里放。


http://img.mukewang.com/climg/60db3a6c094404d540962034.jpg

发生 GC 的时候:

http://img.mukewang.com/climg/60db3a7109d7b5f640962247.jpg

1
hargin
回复
harry_27
hp>1、gc会对对象池中的对象标记清除吗。 

victim 里的就直接干掉了。


2、老的local转到victim里的话这部分对象不会被gc回收吗。还有过程对象池中的对象会变少吗

这部分不会回收,如果之前 victim 非空,那相当于就变少了

h021-07-03
共2条回复

Go高级工程师实战营

慕课网与 GoCN 社区官方联手打造,定义行业Go高级人才培养标准,4个月,快速晋升为P6+/D7级高级人才。

458 学习 · 266 问题

查看课程