go 是常驻内存吗_关于常驻内存RES,pprof,heap,threadcreate的疑问

小弟写了个简单后台用来接收POST请求上传过来的文件,并保存到后台本地。在做测试的时候,每一次请求上传5个文件,5个文件大小总和大概在300-400k的范围,测试的时候模拟客户端并发1000个POST上传文件。后台处理完1000请求后 RES直接上到500MB,查看/debug/pprof/下的threadcreate也直接上到400多个,再并发第二次,第三次... 1000个POST请求,RES在600多MB就不再涨了,threadcreate涨到570以后,增长速度就放缓了,此后七八分钟不再有请求发送RES慢慢再回降到100MB左右,但是threadcreate一直没有降过。上个图吧

##1.服务开启:

####RES:

+![开启服务.jpg](http://studygolang.qiniudn.com/150910/05e61f18e896be39081aa832494f4fe3.jpg)

####heap:

+![开启服务_heap.jpg](http://studygolang.qiniudn.com/150910/90ca275ae3b5dde5859a9afbe82c487f.jpg)

##2.第一次并发1000个POST请求:

####处理完请求,RES:

+![第一次并发1000跑完_mem.jpg](http://studygolang.qiniudn.com/150910/5b4589a869e13b7fb431079cfcad96b7.jpg)

####处理请求中的heap:

+![第一次并发1000_heap.jpg](http://studygolang.qiniudn.com/150910/f75aa423720214da1ba2217ba2af0eee.jpg)

####处理完请求的heap:

+![第一次并发1000跑完_heap.jpg](http://studygolang.qiniudn.com/150910/73622b5dcce0756f4cedf3c8afe3f3a7.jpg)

heap上看不大懂,三个问题:

+**1)是否只需关注inuse?**

+**2)idle是出于空闲的堆,还未把内存返回给系统?**

+**3)HeapReleased是指已经还给系统的内存容量?**

##3.过一段时间,期间没有任何请求,RES就降到100MB左右

####gc截图:

+![gc.jpg](http://studygolang.qiniudn.com/150910/2ace086a4697ad5fda5c072cde61e927.jpg)

gc也不是很明白,>__<

scvg10: 590 MB released

scvg10: inuse: 21, idle: 591, sys: 613, released: 590, consumed: 22 (MB)

是指已经释放掉590MB的内存给系统了?那为什么(5633205-5619348) objects 对象个数没降下来呢?

go是否因为避免频繁的申请释放内存,才没有很迅速将内存还给系统,600MB->100MB,期间没任何请求,等了大概7分钟吧

最后,就是threadcreate为什么不会降下来呢,开了那么多线程何用呢?

希望大神指点一二~~谢谢啦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值