您的位置:首页 > 编程语言 > Go语言

go-处理字符串导致内存溢出

2013-07-30 14:48 253 查看
今日用go来做字符的“+”连接操作,每次连接的字符串大致有10M左右,循环连接100次,直接导致go内存溢出了。

// Text project main.go
package main

import (
"io/ioutil"
"log"
"os"
)

func main() {
log.Println("开始")
userFile := "D:\\txt\\2.txt"
//读文件
readbuf, _ := ioutil.ReadFile(userFile)

//文字数据处理
log.Println("开始处理数据")
strcontent := string(readbuf)
for i := 0; i < 100; i++ {
strcontent += strcontent + "和气生财"
}
log.Println("数据处理结束")
buf := []byte(strcontent)
//写文件
ioutil.WriteFile(userFile, buf, os.ModeExclusive)
}


所报的异常:

runtime: out of memory: cannot allocate 335872000-byte block (998440960 in use)

fatal error: out of memory

一样的业务逻辑用NET来处理则是正常运行,没有出现内存溢出的情况,看来golang的垃圾回收和内容分配还是不够成熟,需要加强
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: