这是代码。
在golang main函数中,该函数位于main.go中

rgc在另一个名为mrgc.go的golang文件中。 里面的代码是

函数GetRgcService是一个空函数。

但是,当我使用valgrind测试内存时,得到以下输出

如何释放这些内存? 由于我需要使用此功能来完成很多过程。 这会导致大量的内存泄漏,无法释放


什么都没有泄漏。内存仍然可以访问,退出时不释放任何东西是很常见的,这只花了不必要的时间,操作系统仍然会处理它。

这是分配给线程本地存储到仍在运行的线程的内存,因此释放它是不正确的。更好的问题是"如何停止该线程?",对此的答案是:您没有,Go运行时会处理它。在退出时不停止线程是很常见的,这只花了不必要的时间,操作系统仍然会处理它。

它与您的代码和函数调用无关,这是Go运行时为其自身分配的东西。

Go是一种垃圾收集语言,在上面使用valgrind不会告诉您太多信息。它既不会检测到实际内存泄漏,也不会了解仍在使用哪个内存。


您可以手动运行垃圾收集:
https://golang.org/pkg/runtime/#GC

我认为这样可以释放内存,但是正如其他人所说的那样,当运行时的调度垃圾收集器运行时,该内存最终将被释放。