file 类型无法取消 gc 时文件关闭的 Finalizer
go 里创建一个 file 时,会默认设置一个 Finalizer,当这个 File 回收时触发,关闭文件 fd,防止 fd 泄露。
但是我们不能通过 runtime.SetFinalizer(file, nil) 取消 File fd 回收的逻辑。原因在于 File 创建的逻辑:
go 标准库里, runtime.SetFinalizer(f.file, (*file).close) 把 Finalizer 设置在私有对象 File.file 上了,外层用户如果仅仅在 File 上取消 Finalizer,当 GC 开始时,f.file 仍然会调用 close 进行处理。
又由于 f.file 是私有类型,外层用户是不能进行 runtime.SetFinalize
继续阅读与本文标签相同的文章
下一篇 :
云计算的定义是什么?
-
招募令:阿里云MVP全球招募中,我们的征途是星辰大海!
2026-05-19栏目: 教程
-
dnspod配置CNAME流程
2026-05-19栏目: 教程
-
使用Gitbook打造个人知识归档系统
2026-05-19栏目: 教程
-
如何在新网配置CNAME的操作步骤
2026-05-19栏目: 教程
-
E-HPC支持多队列管理和自动伸缩
2026-05-19栏目: 教程
