如何为cgo库(绑定到C库的Go库)进行内存评测?

如何为cgo库(绑定到C库的Go库)进行内存评测?,go,memory,cgo,Go,Memory,Cgo,我有一个go程序,它使用govips进行图像处理,go库为libvips提供cgo绑定。我如何找出内存的使用方式?我99%确定实际的C库(libvips)没有泄漏内存,所以govips可能是罪魁祸首 在运行我的应用程序几分钟后,它处理了150张图像。top utility显示应用程序的总内存使用量为1.6GB,而go的pprof则表示仅使用了3.2MB 这也验证了我的go程序不是罪魁祸首,而是带有cgo绑定到C库的go库。也许你可以尝试一些工具,比如Valgrind。如果问题在go端,pprof

我有一个go程序,它使用govips进行图像处理,go库为libvips提供cgo绑定。我如何找出内存的使用方式?我99%确定实际的C库(libvips)没有泄漏内存,所以govips可能是罪魁祸首

在运行我的应用程序几分钟后,它处理了150张图像。top utility显示应用程序的总内存使用量为1.6GB,而go的pprof则表示仅使用了3.2MB


这也验证了我的go程序不是罪魁祸首,而是带有cgo绑定到C库的go库。

也许你可以尝试一些工具,比如Valgrind。如果问题在go端,pprof应该提供一些见解:在这篇博文中,他们用heaptrack和memleak查看了C部件: