我们正在将视频从一个实现IHttpAsyncHandler的ashx传输到我们的Silverlight客户端。
在客户端,异步处理程序在MediaStreamSource的实现中得到使用。
它在最新的Firefox、chrome和Internet Explorer8上都运行得很好。
但在Internet Explorer9中,我们看到了一个内存泄漏。我一直在使用umdh调试内存,发现一个调用堆栈在内存转储之间使用了127mb。所以我想我已经把范围缩小到了这个callstack。
但现在我不知道该继续我的调试了。下面是umdh的信息:
第一次运行和第二次运行之间的比较
+ 117440512 ( 134217712 - 16777200) 1 allocs BackTrace121282BC
+ 0 ( 1 - 1) BackTrace121282BC allocations
ntdll!RtlAllocateHeap+00000274
npctrl!???+00000000 : 56FE1A65
npctrl!DllCanUnloadNow+000157F0
npctrl!???+00000000 : 56FF477E
npctrl!???+00000000 : 56FF48D5
urlmon!CBSCHolder::OnDataAvailable+0000003A
urlmon!CBinding::CallOnDataAvailable+0000002B
urlmon!CBinding::OnDataNotification+000000D7
urlmon!CBinding::OnTransNotification+000001DB
urlmon!CBinding::ReportData+00000085
urlmon!COInetProt::ReportData+0000006E
mscorie!CorFltr::ReportData+0000002B
urlmon!CTransaction::DispatchReport+0000037A
urlmon!CTransaction::OnINetCallback+000000DB
urlmon!TransactionWndProc+00000028
USER32!InternalCallWinProc+00000023
USER32!UserCallWinProcCheckWow+00000109
USER32!DispatchMessageWorker+000003BC
USER32!DispatchMessageW+0000000F
IEFRAME!CTabWindow::_TabWindowThreadProc+00000722
IEFRAME!LCIETab_ThreadProc+00000317
iertutil!CIsoScope::RegisterThread+000000AB
IEFRAME!Detour_DefWindowProcA+0000006C
kernel32!BaseThreadInitThunk+0000000E
ntdll!__RtlUserThreadStart+00000070
ntdll!_RtlUserThreadStart+0000001B第二次运行callstack
+ 7fffff0 ( 7fffff0 - 0) 1 allocs BackTrace121282BC
+ 1 ( 1 - 0) BackTrace121282BC allocations
ntdll!RtlAllocateHeap+00000274
npctrl!???+00000000 : 56FE1A65
npctrl!DllCanUnloadNow+000157F0
npctrl!???+00000000 : 56FF477E
npctrl!???+00000000 : 56FF48D5
urlmon!CBSCHolder::OnDataAvailable+0000003A
urlmon!CBinding::CallOnDataAvailable+0000002B
urlmon!CBinding::OnDataNotification+000000D7
urlmon!CBinding::OnTransNotification+000001DB
urlmon!CBinding::ReportData+00000085
urlmon!COInetProt::ReportData+0000006E
mscorie!CorFltr::ReportData+0000002B
urlmon!CTransaction::DispatchReport+0000037A
urlmon!CTransaction::OnINetCallback+000000DB
urlmon!TransactionWndProc+00000028
USER32!InternalCallWinProc+00000023
USER32!UserCallWinProcCheckWow+00000109
USER32!DispatchMessageWorker+000003BC
USER32!DispatchMessageW+0000000F
IEFRAME!CTabWindow::_TabWindowThreadProc+00000722
IEFRAME!LCIETab_ThreadProc+00000317
iertutil!CIsoScope::RegisterThread+000000AB
IEFRAME!Detour_DefWindowProcA+0000006C
kernel32!BaseThreadInitThunk+0000000E
ntdll!__RtlUserThreadStart+00000070
ntdll!_RtlUserThreadStart+0000001B发布于 2012-09-25 21:13:12
你已经解决你的问题了吗?
您是否检查过SL memory调试提示,例如:
http://radheyv.blogspot.cz/2011/04/detecting-memory-leaks-in-silverlight.html#!/2011/04/detecting-memory-leaks-in-silverlight.html
http://blogs.msdn.com/b/slperf/archive/2010/08/19/analyzing-silverlight-memory-usage-part-1-obtaining-measurements.aspx
http://dllshepherdnotes.blogspot.cz/2011/02/silverlight-memory-leak-part-4.html#!/2011/02/silverlight-memory-leak-part-4.html
http://www.dllshepherd.net/2011/02/silverlight-memory-leak-part-2.html
https://stackoverflow.com/questions/9034828
复制相似问题