如何判断内存泄漏

如何判断内存泄漏,第1张

内存泄露是指使用内存完成后没有释放,内存增长并不能分辨增长出来的内存是进程真正要用的,还是进程泄露出来的。而CPU的占用是瞬时的、确定的,不存在某个进程申请了CPU占着不用的情况。在稳定性测试(也叫持久测试或疲劳测试)中,需要观察内存是否有泄露。然而使用内存的进程千千万,整个服务器的内存增长似乎也不能判断某个进程的内存有泄露。因此在稳定性测试过程中往往需要全程关注指定进程的内存消耗,比如运行3天、7天。

查看内存使用情况的命令有ps、sar、svmon、vmstat等等,但本文并不从工具使用的角度来介绍,而是从性能测试中关注指标的角度来介绍。如果采用其他命令查看内存,需注意,相似的名字在不同命令当中的含义是不一样的,一定要搞清楚这个字段的真正含义。

例1:Virtual这个词,有时候在内存里面指Paging Space(换页空间),有时指进程空间里面占用的所有分页(包括物理内存和Paging Space中的分页)。

例2:Nmon中的PgIn/PgOut、topas中的PageIn/PageOut是指对文件系统的换页,而vmstat中的pi/po是对Paging Space的换页,而topas P中进程的PAGE SPACE是指进程的Data Segment。

1:go与c语言相比,go有垃圾回收,不会造成内存泄露问题,go的语法简洁优美,同样的c++100行代码go大概50行可以做到,go的目标是能做C++能做的事,虽然目前可能不太实际

2:go的并行机制并不是一般的线程,通过channel和goroutine来实现,比线程还要轻量级很多,所以go适合高并发的服务器端

3:go是系统级别的语言,相当于c语言,java c#都是算比较高级的语言,这个不太好比,效率的话目前确实是要高一些,而且不需要外部依赖,所以go还是很强大的


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/763867.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-19
下一篇2023-08-19

发表评论

登录后才能评论

评论列表(0条)

    保存