今日用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的垃圾回收和内容分配还是不够成熟,需要加强