多个 goroutine 的 Go 内存消耗

2024-03-28

我试图检查 Go 在 100,000 个 goroutine 上的表现如何。我编写了一个简单的程序来生成许多例程,除了打印一些公告之外什么也不做。我将 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)
}

目前无法设置 goroutine 的最小堆栈大小。

Go 1.2 将最小大小从 4KB 增加到 8KB

The docs http://golang.org/doc/go1.2#stack_size say:

“在 Go 1.2 中,创建 Goroutine 时堆栈的最小大小已从 4KB 提升到 8KB。许多程序都遇到旧大小的性能问题,这往往会在性能关键的情况下引入昂贵的堆栈段切换新的数字是通过经验测试确定的。”

但他们接着说:

“更新:增加的最小堆栈大小可能会导致具有许多 goroutine 的程序使用更多内存。没有解决方法,但未来版本的计划包括新的堆栈管理技术,应该可以更好地解决该问题。”

所以你将来可能会有更多的运气。

See http://golang.org/doc/go1.2#stack_size http://golang.org/doc/go1.2#stack_size了解更多信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多个 goroutine 的 Go 内存消耗 的相关文章

随机推荐

  • svn结帐深度

    我有一个 SVN 项目 其树如下 project dir1 subdir1 file1 file2 file1 file2 dir2 file1 file2 dir3 subdir1 file1 file2 subdir2 file1 fi
  • 字体大小 <12px 在 Google Chrome 中无效

    css font size 我应该怎么办 我的 Google Chrome 浏览器使用默认设置 我的版本是4 0 249 89 我使用的是Windows XP 您可以将以下代码粘贴到 Google Chrome 中进行测试 p style
  • 为什么 IE11 在 ajax 请求的请求标头中发送“pragma: no-cache”?

    我正在 IE11 上测试我的网页 我正在进行一些 ajax 调用并将响应标头设置为 Cache Control private max age 21600 虽然每次发出请求时 IE11都会设置Pragma no cache请求标头 导致请求
  • 为什么 Jersey/JAX-RS 客户端无法处理泛型?

    我有一个 Jersey JAX RS 客户端 它使用 RESTful API JSON 该 API 应该返回我的 POJO 列表 Hits GET localhost 8080 myapp fizz widget widget id Ove
  • 我可以在没有自己的后端服务器的情况下在 React 中实现 Stripe checkout 吗?

    我在 Netlify 上部署了一个 React 前端 我想实现一个简单的支付系统 用户可以输入他们想要的金额并使用 Stripe 结帐甚至 PayPal 进行支付 我想知道这是否可以在不支付单独后端费用的情况下实现 或者您可以建议其他任何自
  • 如何使用 jquery 追加整个 html 文件

    我有一个像这样的html文件 some content some content 我的问题是如何使用 jquery 加载这个文件作为一个整体 我尝试过 我搜索了很长一段时间的解决方案 但只找到了很多方法来附加html文件的某些部分 例如元
  • Android 通用 AsyncTask 类

    我看过这个答案 由于 AsyncTask 是一个单独的类 如何将 OnPostExecute 的结果获取到主活动 https stackoverflow com questions 12575068 how to get the resul
  • AngularJS ng-repeat 通过复杂和动态的 JSON 数组

    我正在尝试使用 JSON 数组向用户显示内容ng repeat选项 这JSON Array是动态创建的 所以我有点困惑如何向用户显示相同的内容 的语法JSON ARRAY内容如下COMPLEX key可以动态增加或减少 jsonList n
  • ASP.Net core-从中间件获取routetemplate值

    我有一个中间件 每次对我的 API 发出请求时都会调用该中间件 我想记录路由模板以及来自该中间件的请求的持续时间 如何在我的中间件代码中获取路由模板 路由模板类似于 products productId 这是我如何让它发挥作用的 我在过滤器
  • 如何使用 Python 和 Django 创建 SaaS 应用程序

    您能给我一些建议 让您可以使用 Python 和 Django 创建 SaaS 软件即服务 应用程序吗 目前我不明白的一般主题是 您是否为所有客户提供一个可用的应用程序 或者为每个客户提供一个应用程序 如何管理每个客户端的数据库访问 权限或
  • 原生原型与 $.extension()

    在工作中 我们使用 jQuery 在我们开始使用它后不久 我看到几个开发人员正在向文件 jquery extensions js 添加函数 在里面 我发现添加了一大堆方法 这本质上相当于 jQuery 上的静态方法 这里有一些 format
  • Apache 目录 LDAP - 分页搜索

    我一直在寻找使用 Apache Directory API 执行分页搜索的信息 但我没有找到任何示例或任何有关如何使用正确的 PagedResults 控件构建 SearchRequest 然后执行搜索的信息 你们有什么建议吗 或者知道哪里
  • TextToSpeech 改变声音

    我希望能够更改文本转语音 API 中的语音 例如更改 声音由女声转为男声 让声音更清晰 改变语速 请有人让我知道这是否可能 谢谢 您可以通过以下方式为特定字符串提供自己的转换addSpeech 不过 AFAICT 没有文档说明如何替换自己的
  • 如何构建这个项目? (jpeg 库)

    Edit 我现在正在使用http code google com p jpeg compressor http code google com p jpeg compressor 所以我不再关心让这个工作了 我下载了http ijg org
  • 从日语 IME 获取更多数据

    在我的 C 表单中 我有一个数据网格视图 我想在其中输入单词或句子的汉字和假名版本 并将它们放在不同的列中 例如 転寝 寝坊 我想要实现的是当我提交第一列时自动填充第二列 我知道有一些词典包含汉字读法 但对于句子来说它会变得复杂 而且还有很
  • 使用 VisualVM 和 JMX 进行远程监控

    我想使用 jvisualvm 或 jconsole 监视远程运行的 java spring boot 应用程序 在本地运行时 我可以在 jvisualvm 和 jconsole 中看到托管 bean 远程运行时我无法连接 我用几个不同的ja
  • 得到一个名为保留字的Oracle表,可能会出现哪些问题?

    我们刚刚外包了一个系统 乍一看我可以看到一些名称为 CASE 或 FROM 的表和字段 它是一个 Oracle 10g DB 我们将使用来自 Java Hibernate C C 的这些数据 有什么特别我们应该注意的吗 对于我在其他帖子中看
  • jQuery:一年中的一周脚本正在运行

    不久前我需要一个脚本来每周更新一些内容 我的问题在这个论坛 https stackoverflow com questions 3701276 jquery update content every week or long period
  • CMS 软件中的空白 index.html 而不是 .htaccess

    我注意到 Joomla Wordpress 和其他 CMS 在其所有子文件夹中都有空白的 index html 文件 以防止人们窥视文件夹结构 我的问题是为什么他们不能禁止使用 htaccess 文件查看文件夹 而不是将空白的 index
  • 多个 goroutine 的 Go 内存消耗

    我试图检查 Go 在 100 000 个 goroutine 上的表现如何 我编写了一个简单的程序来生成许多例程 除了打印一些公告之外什么也不做 我将 MaxStack 大小限制为仅 512 字节 但我注意到程序大小并没有随之减小 它消耗了