内存泄露测试

上一篇 / 下一篇  2008-01-19 12:21:48

内存泄露检测

2007-12-21 11:38:51 / 个人分类:性能测试

下面是我跟网友探讨内存泄露检测方法的聊天记录:

思念(267097045) 10:18:37软件测试专业网站:51Testing软件测试网,K5{7a k/AEX.^
内存泄露是内存申请而没有释放测试方法 打开任务管理起察看性能记录当前内存使用量,然后启动你的被测试程序,运行使用相应的功能,察看内存使用情况,任务管理器切换到进程页面,然后看内存使用栏目,察看进程内存使用增量情况,使用程序一段时间然后关闭进程,察看 总体内存增量软件测试专业网站:51Testing软件测试网,Z1aW2UE$~L ~+O'`6b;g+W
思念(267097045) 10:19:02软件测试专业网站:51Testing软件测试网{&`+y]*g5pf
如果确认有内存变化,那么进一步进行确认。
@gLx+peY?d119057思念(267097045) 10:19:47
cS$fp1|p119057定位问题到底是在哪里  有代码走读 有runtime的monitor等不同的方法。
/Q;Z'Sn bR"l119057紫 梦(282861425) 10:23:52软件测试专业网站:51Testing软件测试网4@K)uX [s"l!b
使用程序一段时间然后关闭进程,察看 总体内存增量软件测试专业网站:51Testing软件测试网?u+H S$v4h/e/U
关闭进程是指把系统关掉吗?软件测试专业网站:51Testing软件测试网,d4w`9~/M&M3x3B
思念(267097045) 10:24:29软件测试专业网站:51Testing软件测试网5mH/Bc]v
关闭你的被测试程序软件测试专业网站:51Testing软件测试网b.y!m;{\-i
思念(267097045) 10:24:47
a/?8\I-P119057cpu和内存泄露没有必然的关系
_(A t3Kd#hI119057紫 梦(282861425) 10:25:30
4M5W/r%]Q6T[119057运行使用相应的功能    有指定需要运行多长时间吗?
w:At keJ[|119057思念(267097045) 10:26:10
R L@Tb6q119057我说的这些是分析定位的过程,是确认是否有内存泄露
2SP&P\s4DZx119057思念(267097045) 10:26:26软件测试专业网站:51Testing软件测试网6F7_ ow6Qu#A t1W
运行多长时间看你的”疑心“在哪里软件测试专业网站:51Testing软件测试网8a(mJu9X;wY5YdT;]E
思念(267097045) 10:26:52软件测试专业网站:51Testing软件测试网,M'}5dg?
你觉得是使用某一个功能就开始有内存泄露还是,使用了很长时间之后才会引起内存泄露软件测试专业网站:51Testing软件测试网E8} h+WF
思念(267097045) 10:27:41软件测试专业网站:51Testing软件测试网"s V+? ~h!k
如果是前一种,只要使用下相应的功能,就可以判断是否有内存泄露,如果是很长时间才会出现这种情况那么就要运行一段时间,以前我做的项目要运新10天左右才会有内存泄露现象出现软件测试专业网站:51Testing软件测试网i2N4g7`*f6q^ ct
紫 梦(282861425) 10:28:59软件测试专业网站:51Testing软件测试网xwm^fer6OF'W
好的  谢谢软件测试专业网站:51Testing软件测试网2i yew@-~
思念(267097045) 10:29:55软件测试专业网站:51Testing软件测试网pG+D,}(z&L rj
当确认有内存泄露之后才是进一步定位,确认是在多用户情况下出现,还是在单用户情况下出现,如果是多用户情况下出现可以利用lr进行测试,如果单用户情况下出现可以利用前面的兄弟说的利用unit testing tool进行定位,利用unit testing tool和语言有关系,找到符合你应用的语言工具
@ @ O~!BTqE2s119057思念(267097045) 10:30:24
y&I"Y Bd2J119057如果是lr模拟用户进行访问,然后添加相应的计数器就可以定位了软件测试专业网站:51Testing软件测试网,b9\.?M0u&p k
紫 梦(282861425) 10:30:35
b[`b I v119057那内存使用率要涨幅多大 才能判断内存泄露软件测试专业网站:51Testing软件测试网 S![$~4RIk9g
思念(267097045) 10:32:07
U3H:_5a+I119057如果是lr我选者以下计数器 可以定位是否有内存泄露:
L7JVv}9Y}^]119057% User Time for two processes (RService & tomcat5) and the whole system (_Total)软件测试专业网站:51Testing软件测试网{LZF4T Q |
Available bytes in the system软件测试专业网站:51Testing软件测试网2Zd{3OC
Handle counts软件测试专业网站:51Testing软件测试网3g V4HjC+Ry
Thread counts

Working Sets软件测试专业网站:51Testing软件测试网x/R c]\ dJ
思念(267097045) 10:32:35软件测试专业网站:51Testing软件测试网v]"f5S;m/?(B
不管是多大都可以确认
A7s)EZ7nYB%O119057紫 梦(282861425) 10:33:11软件测试专业网站:51Testing软件测试网T;w8[!Jm r,z1]
什么意思 你是说 关闭进程后  如果内存一直没有下降的话 是不是就可以判断系统存在内存泄露
!lcM/C#U.dm1[119057思念(267097045) 10:33:20
.mFqxZ119057使用率是看程序运行之前和运行之后 的前后对比软件测试专业网站:51Testing软件测试网+R8Z L;L{8bn2{
思念(267097045) 10:34:03
_m cx1NM3t h+J119057也许有下降,但是程序完全退出只要仍然有一部分没有释放就可以确认了
i&t7}6u0L9y`r119057紫 梦(282861425) 10:35:30软件测试专业网站:51Testing软件测试网 W)E,_^/W
也就是说 运行之前和运行之后 如果内存使用率 都差不多的话 那就说明没有问题  如果运行之后的内存使用量比运行之前多的话 就说明有内存泄露 是吗
W+ZB eCD4?0K119057思念(267097045) 10:35:54软件测试专业网站:51Testing软件测试网'h!lLi!z
yes软件测试专业网站:51Testing软件测试网ov aH-B2V1jC{
思念(267097045) 10:35:56软件测试专业网站:51Testing软件测试网0nY"R1Pa?7_
呵呵
afF:Kw6M2~119057紫 梦(282861425) 10:39:25
hT ZhhxR119057如果说运行前 web系统的ie内存使用量为30,220软件测试专业网站:51Testing软件测试网y-Sde!T0U]:L
而运行后 变成175,484软件测试专业网站:51Testing软件测试网%X A0i#u;v{s0M
内存总使用量为642(前),783(后)软件测试专业网站:51Testing软件测试网*Kf*vj&ucd
这时候我是不是可以关闭被测程序,来查看内存总使用量
%s#\| L,P'Q&Z'ws119057思念(267097045) 10:40:19软件测试专业网站:51Testing软件测试网w?/x.cv8[[ \Q7\
关闭你的被测试系统之后 在前后对照
X|l-D&I|5m119057紫 梦(282861425) 10:42:30
Y)_6yw&po119057那如果说有一个页面,我每打开一次 ,IE的内存就往上涨一点。可是关闭整个系统后,内存总使用量又没有差别的话软件测试专业网站:51Testing软件测试网'{V1n.F&h9wj'gP7f
这样算不算存在内存泄露呢
$v{D%FG/yw119057思念(267097045) 10:42:57
!B2P[w^@8|119057内存总使用量又没有差别的话?
(| l7Vj+e$Hg119057紫 梦(282861425) 10:43:28
q^'B:gJ U119057是的 关闭整个系统后 内存总使用量就恢复到原来的情况软件测试专业网站:51Testing软件测试网Bf F8A!A7I9N(j.K
紫 梦(282861425) 10:43:49软件测试专业网站:51Testing软件测试网@/M]M^8Q"gw
可是系统中有一个页面,每打开一次,内存就往上涨一点
|%Njp.r)mBY2E119057思念(267097045) 10:43:45软件测试专业网站:51Testing软件测试网+^/`.l `{I+z \.~
那就没有内存泄露软件测试专业网站:51Testing软件测试网m a&r J0xao
紫 梦(282861425) 10:45:14软件测试专业网站:51Testing软件测试网Z lV#Y4F y J-u1@
按你的意思是 只要关闭被测程序后,整个内存没有变化 就都不算内存泄露 是吗
+mRH)M|(q119057签の千寻(365099778) 10:47:53
]|-b6g5y1o119057关闭程序之后,内存应该会降回去软件测试专业网站:51Testing软件测试网-s-?X%C#^ Wf"UG
思念(267097045) 10:47:56软件测试专业网站:51Testing软件测试网R5k'aG;q
一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显示释放的内存。C应用程序一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。软件测试专业网站:51Testing软件测试网AN6a2VhM
思念(267097045) 10:48:41
1ork'O|vP v-\7G119057紫 梦 GC 知道是什么么?
zs P-R,p:K119057签の千寻(365099778) 10:48:47
8u'^ bJ&Yp119057没有回落就是有内存泄漏,是这个意思吧
(TO9l YM~ ^119057紫 梦(282861425) 10:48:56
q||'a[jP1f-|119057不知道
D)`3}%R*t119057思念(267097045) 10:48:59软件测试专业网站:51Testing软件测试网F]!^j(A
对的软件测试专业网站:51Testing软件测试网 \;p)S^/Xb
紫 梦(282861425) 10:49:30软件测试专业网站:51Testing软件测试网 b@Dw2z8Ls!A
如果说我程序开着  但都没有使用
u%k^D&[8l119057这样内存会不会回落呢
&n \ P0|i L119057签の千寻(365099778) 10:49:58
'O/tg+T(i)bv,z{-`119057程序开着肯定会占用一点内存的吧。。这个不是很清楚哦
2v0d/s/y*G*ez119057思念(267097045) 10:50:07软件测试专业网站:51Testing软件测试网j _ GO2h@5i/C!{
紫 梦 这种情况也可以回落,但是你要知道程序申请了多少内存
*T wL0q7C?(~l119057思念(267097045) 10:50:57
{\#O5d/z119057操作系统的知识建议回去看看 呵呵 
,^9s|,^;Ym P119057紫 梦(282861425) 10:52:05
"~ D"G#TL-@v7K(C/l ]119057如果说 这种情况下内存都没有回落 是不是也能说明系统存在内存泄露呢


TAG:

sunchenyu的个人空间 引用 删除 sunchenyu   /   2011-07-26 11:23:25
对web那一块没有内存泄漏有点迷茫哦,为什么不算该web的内存泄漏呢?而是看整个终端?有好多公司一个终端都是分好多组,好多时期,集成一个终端的,当专门的web组测试的时候,这个web不算内存泄漏吗?
引用 删除 dxy_lwj   /   2009-08-21 10:57:51
很有用,这几天一直在为这些问题发愁!
满天星 引用 删除 tangyanting   /   2008-12-26 10:53:46
真是谢谢了
正愁不知怎么开始测试内存泄露的问题呢
指明了方向呵呵
lijiyan的个人空间 引用 删除 lijiyan   /   2008-07-10 17:22:33
5
思念哦.... 我刚来51时候的老大......
 

评分:0

我来说两句

日历

« 2024-04-20  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 9130
  • 日志数: 16
  • 图片数: 1
  • 建立时间: 2007-05-23
  • 更新时间: 2018-09-02

RSS订阅

Open Toolbar