在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
本来想打算用go来处理一个1G左右的txt文本的,但是在去读取的时候就报内存溢出了,提示数组已经无法在分配。 用的是:ioutil.ReadFile 方法来读取文本,它的返回值是一个[]byte 数组,内存溢出的原因就是[]byte数组已经超过最大限度值了,于是就想探清一下 go 到底能给[]byte分配多长的数组 var arry [804254644]byte log.Println("读取完毕", len(arry))
很简单的一段代码,就是一个简明的声明,不做任何其他的处理,经过不断的调试,发现声明的数组长度如果大于 804254644 这个长度的就会报异常,小于的则正常,难道 804254644 就是 go 的[]byte的最大长度? 本人的机器是4G内存,[804254644]byte的容量大致是 766M ,这也太小了吧,难道谷歌就只能让他的go最大只能处理766M的文件? 但愿还是我的环境问题而不要是go的问题
|
请发表评论