题目序号:618 同40题
题目来源:
频次:高频
答案1:(重拾)
垃圾回收就是对程序中不再使用的内存资源进行自动回收的操作。
三色标记法
- 初始化状态下所有对象都是白色的。
- 从根节点开始遍历所有对象,把遍历到的对象变成灰色对象
- 遍历灰色对象,将灰色对象引用的对象也变成灰色对象,然后将遍历过的灰色对象变成黑色对象
- 循环步骤3,知道灰色对象全部变黑色。
- 通过写屏障检测对象有变化。重复以上操作
- 收集所有的白色对象(垃圾)
题目序号:639
题目来源:学而思
频次:1
答案1:(重拾)
1.切片是基于数组实现的,它的底层是数组,所以它的底层的内存是连续分配的。切片对象非常小,是因为它是只有3个字段的数据结构:
- 指向底层数组的指针
- 切片的长度
- 切片的容量
Go中切片的扩容首选判断 如果旧切片的长度小于1024,则最终容量就是旧容量的两倍,否则,最终容量是从旧容量开始循环增加到原来的1/4.
情况一:如果原数组还有容量可以扩容,扩容后的数组还是指向原来的数组。
情况二:原来数组的容量已经达到了最大值,再想扩容,Go默认会先开一片内存区域,把原来的值拷贝过来,然后在执行append()操作,这种情况丝毫不影响原数组。
本文来自投稿,不代表本站立场,如若转载,请注明出处: