none
silverlight 内存泄露问题 RRS feed

  • 问题

  • 每增加 一次 MaskPanel.Children.Add(MyUserControl) 就增加 10M的内存,
    ----MyUserControl 只有100条纯文本记录, 点十次就100M而且没有办法卸载内存!!!!
    次问题很严重。。.Children.Remove 无有任何内存减少的迹象。
       有没有办法卸载内存?
     
    2009年6月3日 2:48

答案

全部回复

  • 最晕的是每刷新页面时会增加2M的内存。
      ----------能省点用吗???
    2009年6月3日 3:07
  • 你好,
    请问如果你显式清内存内存使用率会减少吗?

     

    //在这里设置断点1,进入到这个断点时检查内存使用情况1。

    GC
    .Collect();
    GC.WaitForPendingFinalizers();

    //在这里设置断点2,进入到这个断点时检查内存使用情况2。


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    2009年6月8日 5:51
    版主
  • Children.Remove  时没有清除 对象
    调用 GC.Collect ,手工设置一些对象为 nothing 会清到一些内存,10M减少到6M。

    不知道原因。是不是
      AddHandler 。。。。, AddressOf 。。。 这样的语句使用的原因。
     很多地方都用了,很难找到全部。
    2009年6月8日 10:10
  • 这是正常的现象。具体原因请参考.NET 垃圾回收原理:
    http://msdn.microsoft.com/en-us/magazine/bb985010.aspx

    你Remove掉Children以后等内存使用率上升了自动会回收内存的。
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    2009年6月9日 3:01
    版主
  • 从你的回答看,我很怀疑你到底测试过楼主说的问题没有。反正我从2一直到4,都没有发现GC能真正回收垃圾。除非silverlight插件因为内存不足自己崩溃掉。否则内存会一直攀升。
    2011年1月24日 5:31
  • 你好,

    请理解.NET GC运行原理。如果你发现内存泄露问题可以用WinDbg来debug,首先看是否是.NET managed heap占用大量内存,是的话用gcroot命令进行debug来查看什么对象占用内存最多,根据GC root来追根溯源,最终能确定是否是代码的问题还是runtime问题(可能性极小)。


    Allen Chen [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年1月24日 7:02
    版主
  • 发现相似的内存上升问题。SL3比SL4要严重得多。

    我也怀疑SL本身有问题。

    如果把浏览器最小化,内存使用率会迅速下降。这个Microsoft,不知道他们是怎么搞的。

    2011年1月25日 11:10
  • 我也是发现内存一直攀升
    2013年10月31日 5:29