![111.png](https://static.golangjob.cn/230615/8910525c3b6c6bc7e71f7711fa712448.png)
body := string(b)
就这一行代码,通过pprof查看内存占用过多。其中b类型是[]byte,而body类型是string。
刚开始以为是getBody导致的,因为使用http.Client处理不当导致内存溢出问题,但修改了多次,pprof指示的都是body := string(b)这一行内存占用过多。
而getBody中返回值已经限制b的返回长度不超过200*1024,但运行几天后,依然会内存溢出而被系统杀掉的情况。难道是官方的string类型转换有bug?
/var/log/messages系统日志如下:
```text
Jun 14 18:03:04 VM-8-5-centos kernel: Out of memory: Kill process 9568 (data-center) score 322 or sacrifice child
Jun 14 18:03:04 VM-8-5-centos kernel: Killed process 9568 (data-center), UID 0, total-vm:1984540kB, anon-rss:1256132kB, file-rss:0kB, shmem-rss:0kB
```
另外这个GetTitle是在多协程里面运行的,但是这个是局部变量,为什么会有此类问题呢?请高人指点,如何解决
有疑问加站长微信联系(非本文作者)