语义垃圾(Semantic Garbage)

语义垃圾(Semantic Garbage)

Content #

语义垃圾(semantic garbage),有些场景也被称为内存泄露,指的是从语法上可达(可以通过局部、全局变量被引用)的对象,但从语义上来讲他们是垃圾,垃圾回收器对此无能为力。

我们来看一个语义垃圾在 Go 语言中的实例:

这里,我们初始化了一个 slice,元素均为指针,每个指针都指向了堆上 10MB 大小的一个对象。

当这个 slice 缩容时,底层数组的后两个元素已经无法再访问了,但它关联的堆上内存依然是无法释放的。

Viewpoints #

From #

大咖助阵|曹春晖:聊聊 Go 语言的 GC 实现