我正在用Go编写游戏。有人告诉我我的代码正在泄漏内存。找出泄漏原因的正确方法是什么?
我知道 pprof 存在,但据我所知,当您的应用程序使用http程序包并且我的应用程序是一个简单的游戏并且不使用任何网络连接时,就可以使用它。
最佳答案
当然,您可以使用runtime/pprof package创建没有HTTP服务器的配置文件。 Dave Cheney还提供了github.com/pkg/profile,它是运行时/pprof的包装器,具有更简单的API。例如,您可以使用信号处理程序来启用和禁用分析。
话虽如此,仅凭pprof,什么都不会阻止您启动HTTP服务器。我发现这更加方便,因为这样您就可以轻松按需创建任何配置文件。
// +build debug
package main
import (
"log"
"net/http"
_ "net/http/pprof/"
)
func init() {
log.Println("Launching pprof server")
go func() { log.Fatal(http.ListenAndServe("localhost:3030", nil)) }()
}
这使用了构建标记,因此您可以在开发中启用服务器,但将其从生产构建中排除。用
-tags debug
编译以启用服务器。有关详细信息,请参见Build Constraints。
关于go - 在Go语言编写的游戏中查找内存泄漏的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58228621/