【发布时间】:2019-08-05 13:44:05
【问题描述】:
这是一个非常简单的应用程序:
package main
import "fmt"
func main() {
for i:= 0; i < 100000; i++ {
go func (){
fmt.Println("hello message.")
}()
}
fmt.Scanln()
fmt.Println("done")
}
在 windows 上运行应用程序后,查看 windows 任务管理器我看到了这种状态:
有人能说出为什么吗?
【问题讨论】:
-
为什么你认为884mb是高内存使用?我想说这对于多达 10 万个 goroutine 来说是相当令人印象深刻的。
-
因为我使用 .NET Core 使用 Tasks 模拟了这个程序,它只消耗了 17 MB 的内存!
-
如何在 .NET 中“模拟”goroutine?
-
@RahmatAnjirabi 如果您还确保您的 .NET 解决方案在启动所有 100,000 个线程之前也没有结束任何线程,您只能比较内存使用情况。
-
从 GopherCon 查看
The Scheduler Saga。它深入解释了 Go 调度器:about.sourcegraph.com/go/gophercon-2018-the-scheduler-saga
标签: string go memory-leaks goroutine