使用许多 goroutine 消耗内存

我试图检查 Go 将如何使用 100,000 个 goroutines 执行。我编写了一个简单的程序来生成许多例程,这些例程除了打印一些公告之外什么都不做。我将 MaxStack 大小限制为 512 字节。但是我注意到程序大小并没有随之减少。它消耗了大约 460 MB 的内存,因此每个 goroutine 大约消耗 4 KB。我的问题是,我们能否将 goroutine 的最大堆栈大小设置为低于“最小”堆栈大小(可能是 4 KB)。我们如何设置 Goroutine 开始的最小堆栈大小?下面是我用于测试的示例代码:


package main


import "fmt"

import "time"


import "runtime/debug"


func main() {

    fmt.Printf("%v\n", debug.SetMaxStack(512))

    var i int

    for i = 0; i < 100000; i++ {

        go func(x int) {

            for {

                time.Sleep(10 * time.Millisecond)

                //fmt.Printf("I am %v\n", x)

            }

        }(i)

    }

    fmt.Println("Done")

    time.Sleep(999999999999)

}


慕容708150
浏览 283回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go