唯一纯白的梦里花,盛开在琥珀色月牙,就算是去所有爱的力量,我也不曾害怕!-------本站点部分文章来自网络,如果涉及到版权问题请与本人联系,本人将及时删除

内存泄露检测

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

,xE6]2q(N x }mW0下面是我跟网友探讨内存泄露检测方法的聊天记录:51Testing软件测试网L-P H^(|'e B`

51Testing软件测试网 Yuway

思念(267097045) 10:18:37
Z:GcbP"C(f0内存泄露是内存申请而没有释放 测试方法 打开任务管理起察看性能记录当前内存使用量,然后启动你的被测试程序,运行使用相应的功能,察看内存使用情况,任务管理器切换到进程页面,然后看内存使用栏目,察看进程内存使用增量情况,使用程序一段时间然后关闭进程,察看 总体内存增量51Testing软件测试网R\5geF,juq
思念(267097045) 10:19:02
_Y$[9|n/KN|QbW0如果确认有内存变化,那么进一步进行确认。51Testing软件测试网7Y/s@ eu9P7??|}
思念(267097045) 10:19:4751Testing软件测试网t;ulq'KB8y3Y
定位问题到底是在哪里  有代码走读 有runtime的monitor等不同的方法。
TO2pAA"lO s0紫 梦(282861425) 10:23:5251Testing软件测试网stB%x)`2}4_
使用程序一段时间然后关闭进程,察看 总体内存增量
m3BJ/]F0L Y!q0关闭进程是指把系统关掉吗?
t \k W9oP-gI+j7wH3?2A0思念(267097045) 10:24:2951Testing软件测试网7PT%p JO&g
关闭你的被测试程序
l`,Hg#UL0思念(267097045) 10:24:47
-tTYUp0E f"U~0cpu和内存泄露没有必然的关系
3Q|Zp#qjK"ER dl!^2A0紫 梦(282861425) 10:25:30
W"LY(FK lqp0运行使用相应的功能    有指定需要运行多长时间吗?51Testing软件测试网0@iaO[?:ik
思念(267097045) 10:26:10
0K(LWpg3]7E0我说的这些是分析定位的过程,是确认是否有内存泄露51Testing软件测试网MZ1v#Xz!t m|V
思念(267097045) 10:26:2651Testing软件测试网0P4ltx7U B"f
运行多长时间看你的”疑心“在哪里51Testing软件测试网&Y UH(L(u{$pq
思念(267097045) 10:26:5251Testing软件测试网ma s gE}1M @ L
你觉得是使用某一个功能就开始有内存泄露还是,使用了很长时间之后才会引起内存泄露
/`w2C~8V0思念(267097045) 10:27:41
fj1m+i7j h/Wg0如果是前一种,只要使用下相应的功能,就可以判断是否有内存泄露,如果是很长时间才会出现这种情况那么就要运行一段时间,以前我做的项目要运新10天左右才会有内存泄露现象出现
#m @5qf*w6wH0紫 梦(282861425) 10:28:59
_!{ n-\m$H$QA-Oz0好的  谢谢
"MpN'p;|_:S V0思念(267097045) 10:29:5551Testing软件测试网 W K(^@l2d"R
当确认有内存泄露之后才是进一步定位,确认是在多用户情况下出现,还是在单用户情况下出现,如果是多用户情况下出现可以利用lr进行测试,如果单用户情况下出现可以利用前面的兄弟说的利用unit testing tool进行定位,利用unit testing tool和语言有关系,找到符合你应用的语言工具
Z G&^|/]0思念(267097045) 10:30:2451Testing软件测试网CX4boP6c5O
如果是lr模拟用户进行访问,然后添加相应的计数器就可以定位了51Testing软件测试网})C/{Io9U:Vvq9r
紫 梦(282861425) 10:30:3551Testing软件测试网 L s*m i\:Z:R,|@Y#~
那内存使用率要涨幅多大 才能判断内存泄露
&ucYAw%^8m.}0思念(267097045) 10:32:07
7C7j0s1zD3NF/z0如果是lr我选者以下计数器 可以定位是否有内存泄露:
tB+~$ds'X'l0% User Time for two processes (RService & tomcat5) and the whole system (_Total)51Testing软件测试网3r;FYg0c*P
Available bytes in the system51Testing软件测试网 M9])g r,Pv;fKM0]s
Handle counts51Testing软件测试网;f o3O1UI&G
Thread counts51Testing软件测试网!o&J9u2K5Q8PMF

51Testing软件测试网 M5g X+q1BI+u#_ @g~

Working Sets
WkA HS.c }0思念(267097045) 10:32:3551Testing软件测试网_` v~:J3H~ e p3l{m6{
不管是多大都可以确认51Testing软件测试网\e5a:q4I T
紫 梦(282861425) 10:33:1151Testing软件测试网 T,j6E U`&y9d
什么意思 你是说 关闭进程后  如果内存一直没有下降的话 是不是就可以判断系统存在内存泄露
9XL U!o%H,M9i6T0思念(267097045) 10:33:20
S@,FV[/R9y0使用率是看程序运行之前和运行之后 的前后对比51Testing软件测试网Y[EwH$^ |U
思念(267097045) 10:34:03
wl]-Z+p:Y{0也许有下降,但是程序完全退出只要仍然有一部分没有释放就可以确认了51Testing软件测试网mq\2V#R,MwU S8g)q
紫 梦(282861425) 10:35:30
4}N{X"p T.FU4f0也就是说 运行之前和运行之后 如果内存使用率 都差不多的话 那就说明没有问题  如果运行之后的内存使用量比运行之前多的话 就说明有内存泄露 是吗51Testing软件测试网(z0f| J W(}
思念(267097045) 10:35:5451Testing软件测试网-Kc7y.KjSoI
yes51Testing软件测试网 CG.C0S/[Pa+G
思念(267097045) 10:35:56
ooGH+f-FX0呵呵51Testing软件测试网L D'C#jI&STW$U}(R
紫 梦(282861425) 10:39:25
'tYTN"D'xH&Z W0如果说运行前 web系统的ie内存使用量为30,22051Testing软件测试网*cVKC0r-T3Zu U
而运行后 变成175,48451Testing软件测试网P)h:hz&M(HN
内存总使用量为642(前),783(后)
;G5{_9j/E)o/}d'os2q0这时候我是不是可以关闭被测程序,来查看内存总使用量51Testing软件测试网 Q5X{k:W,u6@a0i:xh
思念(267097045) 10:40:1951Testing软件测试网m@|Uv`O:[
关闭你的被测试系统之后 在前后对照
p[^vG/iQ0紫 梦(282861425) 10:42:30
cU U2B,i4F;g GQ0那如果说有一个页面,我每打开一次 ,IE的内存就往上涨一点。可是关闭整个系统后,内存总使用量又没有差别的话51Testing软件测试网mL_S?_/u P
这样算不算存在内存泄露呢
vI%`F8xj4X0|X [0思念(267097045) 10:42:5751Testing软件测试网0LN VJ)B8`k D
内存总使用量又没有差别的话?51Testing软件测试网f j9c^4PI5Ez q
紫 梦(282861425) 10:43:28
!T"OPW$p0是的 关闭整个系统后 内存总使用量就恢复到原来的情况51Testing软件测试网4yx,i2i1T0OMC"z
紫 梦(282861425) 10:43:4951Testing软件测试网o4R]#m#t Di0j`-_ |PB
可是系统中有一个页面,每打开一次,内存就往上涨一点51Testing软件测试网!i-C'MY!G:R s
思念(267097045) 10:43:4551Testing软件测试网k0~2wy$|3r7a(X
那就没有内存泄露51Testing软件测试网!_y']3rEiWd
紫 梦(282861425) 10:45:1451Testing软件测试网@l ~F!`
按你的意思是 只要关闭被测程序后,整个内存没有变化 就都不算内存泄露 是吗
SAJ!fy'J.t0签の千寻(365099778) 10:47:53
V H ^K5AZ0关闭程序之后,内存应该会降回去51Testing软件测试网 vW+W6l/p"T
思念(267097045) 10:47:5651Testing软件测试网-Q[0Z$k:Zw@3|
一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显示释放的内存。C应用程序一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。
$U \^,@;C$q0思念(267097045) 10:48:4151Testing软件测试网\8p e4l&D l
紫 梦 GC 知道是什么么?51Testing软件测试网%N U3ZFX:~
签の千寻(365099778) 10:48:47
t9p.C R(N~2?2\8[0没有回落就是有内存泄漏,是这个意思吧51Testing软件测试网.Z| Q9rpe
紫 梦(282861425) 10:48:5651Testing软件测试网;L"w6p%s&zi_;k
不知道
Po$mP&M0思念(267097045) 10:48:59
8tDA`/x5V0对的
'Uj:V2{.{+q x0紫 梦(282861425) 10:49:3051Testing软件测试网%a3iQPg&w%mGt
如果说我程序开着  但都没有使用
x1m6N0lHH0这样内存会不会回落呢
9Es$S(~y[/yX0签の千寻(365099778) 10:49:5851Testing软件测试网^@3Ee2i {T:Yk
程序开着肯定会占用一点内存的吧。。这个不是很清楚哦
_LpKGNm J0思念(267097045) 10:50:07
2C Sdr(La!l0紫 梦 这种情况也可以回落,但是你要知道程序申请了多少内存51Testing软件测试网br1l~5Bt0T i L h
思念(267097045) 10:50:5751Testing软件测试网-@?I{j)`eS2B(k
操作系统的知识建议回去看看 呵呵 
6{0s)Z"A!ke*I uQN#?0紫 梦(282861425) 10:52:05
#T p-P4gX I0如果说 这种情况下内存都没有回落 是不是也能说明系统存在内存泄露呢51Testing软件测试网1z$Sc|+c X'cf


TAG: 性能测试

cap5210的个人空间 引用 删除 cap5210   /   2008-01-03 11:22:39
老朴又出来忽悠了  哈哈
 

评分:0

我来说两句

Open Toolbar