作家
登录

如何判断内存是否泄露及何处泄露

作者: 来源: 2017-12-11 14:07:14 阅读 我要评论

然后采取类似ps –ef| grep java如许的敕令查看这个过程具体是什么内容。

别的,有不少敕令也可以看哪个过程占用物理内存多,但讲真,经常用敕令行去看,但经常看不出来什么结不雅。例如下图,每个过程消费的物理内存似乎差距不大年夜,固然这个例子中办事器上跑oracle如许的体系软件,内存都是oracle占的,但即使不跑oracle,这些过程的内存占用往往也差距不大年夜。

Svmon

列出消费物理内存前十的过程

svmon -Pt10 | perl -e 'while(<>){print if($.==2||$&&&!$s++);$.=0 if(/^-+$/)}'

Svmon琅绫擎的inuse指的是这个过程对物理内存的消费,包含计算内存+非计算内存。其实非计算内存,我们一般是不做过多存眷的,及时占用的多,也没什愦问题。

ps

  1. ps aux | head -1 ; ps aux | sort -rn +4 | head -10 

按照占用物理内存的百分比排序,列出前十个过程。

Nmon command

  1. nmon --> t (top processes) --> 4 (order in process size) 

2、Paging Space占用

用到Paging Space不必定解释这个过程占用内存多,很有很能是它被其他过程挤出来的。查出谁在用Paging Space,大年夜概率是查出谁是受害者。

解释一下为什么单位是4K,svmon的输出结不雅中,work process private和work shared library data的PSize(Page Size)类型是sm。而这台机械上敕令svmon显示,只有s和m两个类型,分别对应4KB和64KB。而sm这个类型是什么呢?

按照占用Paging Space的过程排序

  1. svmon -P -O sortseg=pgsp 

检查哪个过程引起的Paging到Paging Space(IBM script)。脚本发明po这个指标大年夜于50的时刻保存过程相干信息退出

Paging Space一旦为这个分页分派了磁盘空间,就不会因为这个分页换回物理内存而释放,是以经常可以看到Paging Space的应用率不为0,但此时物理内存占用也不多。Paging Space的应用率不为0只能解释汗青上有物理内存不足的情况。

进一步存眷指定过程是否有泄漏

查看内存应用情况的敕令有ps、sar、svmon、vmstat等等,但本文并不大年夜对象应用的角度来介绍,而是大年夜机能测试中存眷指标的角度来介绍。如不雅采取其他敕令查看内存,需留意,类似的名字在不合敕令傍边的含义是不一样的,必定要搞清跋扈这个字段的┞锋正含义。

例1:Virtual这个词,有时刻在内存琅绫擎指Paging Space(换页空间),有时指过程空间琅绫擎占用的所有分页(包含物理内存和Paging Space中的分页)。

过程应用的数据段

1. 获取来源

ps gv 过程号:SIZE(单位为KB)

svmon –P 过程号:work process private、work shared library data、text data BSS heap、USLA heap、application stack、private load data等segment之和(单位为4KB或64KB)

topas P中过程的PAGE SPACE(单位为4KB)

2. 指标解释

内存泄漏指过程本身申请分派、应用了内存但没有在应用完毕后释放,大年夜量的泄漏会导致物理内存用满,降低体系效力。

若何断定一个过程有没有内存泄漏?AIX中应用ps gv敕令不雅察特定过程的SIZE指标,如不雅SIZE经由长时光测试后,赓续增长,则可能有内存泄漏的嫌疑,这里说的是嫌疑,而不是必定。何况,查看过程的SIZE值也只能查看这个过程应用的一部分内存,而这个过程应用的Shared Memory Segment则不在这个指标中。如不雅是JAVA法度榜样因为涉及到JVM的内存治理,问题就更难断定的,我们先放下JAVA法度榜样不表,单说C的法度榜样。

SIZE在ps敕令傍边的解释是The virtual size of the data section of the process (in 1KB units)。为什么看这个指标,则须要大年夜过程空间开端说。

【编辑推荐】

  1. 若何处理JavaScript内存泄漏
  2. 8G内存破千期近 揭秘存储产品暴涨之谜
  3. 新内存治理筹划:4GB内存用出6GB内存的感到
  4. 内存虚拟化技巧,具体的实现办法有哪两种?
  5. 将来计算范畴,内存计算可能要称老大年夜?
【义务编辑:武晓燕 TEL:(010)68476606】

过程空间的内存可以分为三种类型:

1)数据段:Data Segment (Data + BSS + Heap)

2)栈:Stack


  推荐阅读

  一种检测哈希传递攻击的可靠方法

开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散哈希传递对于大年夜多半企业或组织来说仍然是一个异常棘手的问题,这种进击手段经常被渗入渗出测试人员和进击者们应用。当谈及检测哈希传递进击>>>详细阅读


本文标题:如何判断内存是否泄露及何处泄露

地址:http://www.17bianji.com/lsqh/39652.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)