如何在Google Go中增加堆空间

我正在运行 Rober Hundt 基准测试中的 Go 代码,以比较 Go 与其他语言的性能。当我从该基准运行Go代码(请参阅http://code.google.com/p/multi-language-bench/source/browse/trunk/src/#src%2Fhavlak%2Fgo)时,内存不足例外:

................运行时:内存不足:无法分配1048576字节块(正在使用1270808576)抛出:内存不足

我的问题是如何增加Go的内存空间。是否有一些编译器可以相应设置的启动参数或标志?Go来源的Makefile文件没有显示任何内容...


慕妹3242003
浏览 212回答 3
3回答

MMMHUHU

如果您共享您的操作系统版本,如果是32位对64位,并且获得了您的go version结果,我们可能会为您提供更多帮助。Go的32位版本存在堆内存问题,通常在生产中不使用。确保在64位平台上使用Go的64位版本。Go提示,将成为Go 1.1的go分支已将最大堆空间从8 GB升级到了128 GB。与我交谈过的核心Go开发人员建议使用Go tip进行内存密集型生产。Windows上的Go使用较少,因此测试较少,这可能是一个错误。在Linux和OS X较小程度上,Go的尝试和真实性更高。正如peterSO所提到的,Robert Hundt的基准测试存在缺陷-在此处了解更多:Profiling Go程序

波斯汪

一个人只能疯狂地猜测-因为缺少更多细节。如果您运行的是32位Go版本,请改用64位Go版本,并使用最新修订版。如果可能,请使用* nix平台-它具有IMO更好的内存管理。

撒科打诨

对于那些可能感兴趣的人,我给先生发送了一封邮件。洪特本人问是否有一些(未公开说明的)编译器开关可以通过某种方式修改或参数化堆大小。这是因为我首先错误地认为这样的开关必须存在,但没有记录在案。而且似乎也没人知道我在这里的帖子。我想我在这方面对jvm的工作方式感到“太受启发了”。无论如何,他建议尝试使用不同的编译器(基于gcc的编译器或基于plan-9的编译器),因为一种编译器可能会比另一种更好。当然,然后尝试使用64位计算机。他还为我指出了一些有关Go的内存管理的好文章:http : //lwn.net/Articles/428100/但是,没有,没有编译器开关可以处理内存设置。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go