Windows下Go调用MI接口出现Event句柄泄漏问题求助
Go调用Windows MI时Event句柄泄漏问题
问题描述
我开发了一个调用Windows Management Infrastructure (MI)的Go应用,运行一段时间后发现进程句柄数量异常偏高。通过句柄工具检测,确认存在大量未关闭的Event句柄。
经排查,泄漏根源定位到Operation.GetInstance()方法——即使显式关闭了Operation、Session及Application实例,这些Event句柄仍无法被正常释放,导致句柄持续增长,程序退出后仍有大量残留。
复现步骤
- 在空目录中创建
main.go,写入开头为//go:build windows的核心复现代码 - 创建
go.mod文件,写入内容:module main - 执行命令:
go get - 运行程序:
go run main.go,程序会输出当前进程句柄数量;即使关闭应用,仍有大量Event句柄残留
复现现象
运行代码后,进程句柄数量持续增长;手动关闭所有相关资源后,仍有大量Event句柄未被释放。
内容的提问来源于stack exchange,提问作者jkroepke
相关产品推荐
相关产品推荐

