Fab*_*ini 7 c# memory xaml webbrowser-control windows-phone-8
我正在为Windows Phone 8开发应用程序,我遇到了内存泄漏问题.但首先是一些背景.该应用程序(不幸的是)使用WebBrowsers作为页面.这些页面非常复杂,涉及很多javascript.
应用程序的本机部分用c#编写,负责与javascript进行一些简单的通信(例如,native是javascript与服务器通信的委托),为页面转换,跟踪,持久性等制作动画.是在一个独特的PhoneApplicationPage中完成的.
在我因内存不足异常而崩溃之后,我开始分析应用程序.我可以看到WebBrowsers,它是应用程序的重要组成部分,正在正确处理.但我看到的问题是内存不断增加.更糟糕的是,我对分析器的反馈很少.根据我的理解,分析器图表说存在一个大问题,而分析器数据表明根本没有问题......
注意:该步骤表示从WebBrowser到另一个WebBrowser的导航.通过两个控件之间的动画创建(我猜)尖峰.在我在图像中选择的范围中,我正在向前导航,一个向后进行最多5个WebBrowsers(2个用于总是存在的菜单,1个用于索引页,1个用于我导航的页面和1个对于我导航到的页面).在每个导航中,探查器显示正确数量的WebBrowsers:向前导航后为5,向后导航后为4.
注2:我添加了红线,以便更清楚地知道内存在那段时间内会上升
从图像中可以看出
内存使用量相当大,但数字表示它很低,在这段时间内,保留分配低于启动时...
我希望我已经包含了足够的信息.我想知道可能导致这个问题的一些想法.我到目前为止的想法是:
- WebBrowser中的javascript做错了(例如没有清理一些事件处理程序).即使是这种情况,WebBrowser也不应该在销毁时释放内存吗?
- 使用一个独特的PhoneApplicationPage是不应该做的邪恶,改变它的结构可能会导致这种情况.
-其他?
另一个问题:为什么图表显示正确的内存使用量而数字没有?
如果您需要有关探查器的更多信息,请询问,我将在明天发布.
我认为没有足够的信息来找到泄漏的原因,并且在不发布整个解决方案的情况下,我不确定是否可以,因为问题是找到其根本原因......
我可以提供的是当我遇到内存泄漏时我使用的方法。
该技术是:
请注意,此方法的缺点是:
| 归档时间: |
|
| 查看次数: |
1132 次 |
| 最近记录: |