Golang插件热重载

jos*_*790 5 linux plugins reload go

我正在尝试在 Golang 中重新加载插件,我正在使用 Go 1.8。我尝试再次打开插件,但没有用(打开打开一个 Go 插件。如果路径已经打开,则返回现有的 *Plugin。多个 goroutine 并发使用是安全的。 - Go Plugin open文档)。我想知道有什么方法可以在不重新运行服务器的情况下重新加载?

https://golang.org/pkg/plugin/

mat*_*ttn 4

据我所知,这是不可能的,因为 go 无法卸载共享库。当在插件中创建一些对象并从程序中引用它时,它无法进行垃圾收集。请参阅此问题:https ://github.com/golang/go/issues/11100