人生漫漫,希望能记下自己点点滴滴的感受。。。

发布新日志

  • 内存泄露测试

    liulinzhu 发布于 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如果说 这种情况下内存都没有回落 是不是也能说明系统存在内存泄露呢

数据统计

  • 访问量: 9094
  • 日志数: 28
  • 建立时间: 2008-08-10
  • 更新时间: 2009-03-19

RSS订阅

Open Toolbar